javaScript产生一个文件保存对话框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaScript产生一个文件保存对话框相关的知识,希望对你有一定的参考价值。

请问如何用javascript产生一个文件保存对话框,并且得到保存的路径;
试过

document.execCommand('SaveAs');

但是好像是把网页下载下来了,我现在不需要下载,只希望通过保存界面获得保存的路径。
急求!!!!谢谢!!!!

参考技术A 你是找下载完成东西的时候你发现找不到路径吗?估计你用的是IE,其它浏览器都有打开文件夹功能的,你去下载一个超大的文件,然后下载框弹出来的时候,左下角有一个下载完成后关闭的复选框,你把它去掉,这样下载完成后,你店家打开文件夹按钮就可以打开保存的路径了追问

不是,我并不需要下载文件,只是现在需要一个可视化的文件选择对话框来选择一个文件,然后我需要这个选择的路径,这个路径另有他用。

追答

那么很抱歉了,浏览器不具有这样的功能

参考技术B javascript 获取保存路径 可以使用prompt函数
保存文件 只能保存到服务器,但你不能保存到客户端,目前Javascript 没有操作Windows的功能追问

我其实不需要保存文件,只是弹出个框,用户选择路径后能够返回这个路径就可以了,prompt这个好像没有用户选择界面吧

追答

1自己写个表单 用显示隐藏属性 模拟
2 用Jquery或者Extjs库的组件

参考技术C js没有遍历本地文件的权限
变通的办法,你可以用<input type="file" />来取。
参考技术D 可以模拟一个超链接的点击,此超链接用于下载文件。本回答被提问者采纳

通过 websocket 接收文件并启动下载对话框

【中文标题】通过 websocket 接收文件并启动下载对话框【英文标题】:receive file via websocket and initiate download dialog 【发布时间】:2012-03-26 11:34:36 【问题描述】:

我的 HTML5 Web 应用程序通过 websocket 接收作为二进制数据的文件。有没有办法启动文件下载对话框(通过 javascript)将接收到的数据保存到用户磁盘?

谢谢!

【问题讨论】:

【参考方案1】:

您需要构建一个 dataUri 并使用它打开一个新窗口。特定的 mimetype 可以触发浏览器的自动另存为对话框。

示例数据 uri:"data:application/octet-stream,base64" + base64binary

【讨论】:

+1 好主意,它甚至似乎工作:jsbin.com/acohaz 有 some browser compatibility issues -- 尤其是即使 IE9 还不支持以这种方式使用 data: URI -- 但它是唯一的如果您确实需要将数据保存在客户端,然后启动下载窗口,请在城里玩游戏。【参考方案2】:

还没有,没有。新的File API 目前只涵盖阅读。 更新:如果您只需要在cutting-edge (and to date, non-IE) browsers 上执行此操作,请参阅Peter's answer,您可以使用data: URI 方案执行此操作。

执行此操作的常用方法是通过 HTTP 将文件接收到隐藏的 iframe 中,使用 Content-Disposition: attachment 触发文件下载对话框,而不是通过网络套接字接收它。

【讨论】:

以上是关于javaScript产生一个文件保存对话框的主要内容,如果未能解决你的问题,请参考以下文章

使用 Javascript 动态保存内容

谷歌地图 gpx 导出 - 在 JavaScript 中保存对话框

打开 js 变量的保存文件对话框

如何使用 JavaScript 下载大文件

js如何保存文件

如何用javascript保存网页中的一个img到本地?