js 能够实现在下载文件的时候调系统的选择下载路径的弹窗吗

最近项目有个需求,是在浏览器里点击下载按钮时,能弹出文件下载到哪个路径的对话框;请教下,这个功能js有可能通过调用某个接口实现吗

阅读 20.1k
4 个回答

这个弹框不是js调用哪个接口实现的,弹框的出现是浏览器的行为,一般都是通过后端实现的。
以java为例,点击“下载”按钮,向服务器发送下载请求,服务器接受请求并处理,重点来了,服务器处理完要向前端发response,这时候需要设置特定的response的header(我感觉浏览器出现选择路径等信息的对话框就是按照这个header判断的,纯粹个人猜测,有准确知道的,欢迎留言)
核心代码大概是这个样子:

//设置ContentType
  response.setContentType("application/octet-stream; charset=utf-8");
//处理中文文件名中文乱码问题
  String fileName=new String(file.getName().getBytes("utf-8"),"ISO-8859-1");
  response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
  IOUtils.copy(new FileInputStream(file), response.getOutputStream());

我之前有写过下载文件,浏览器弹出下载框的需求,一开始也是纠结于这个下载框是怎么出现的,后来发现,我的点错了,最后使用的上面的代码实现的,希望有所帮助

这个跟你的手机和浏览器有关,
有的可能会让你确认保存位置,有的直接存到默认位置

没有, 网页中 js 无法操作文件系统

这个是浏览器决定的,
比如chrome 默认用户下载目录, 不需要确认
其它浏览器有些在下载时可以自己选择保存位置

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题