我的HTML5 Web应用程序通过websocket接收文件作为二进制数据。有没有办法启动一个文件下载对话框(通过javascript)来保存接收到的数据到用户磁盘?通过websocket接收文件并启动下载对话框
谢谢!
我的HTML5 Web应用程序通过websocket接收文件作为二进制数据。有没有办法启动一个文件下载对话框(通过javascript)来保存接收到的数据到用户磁盘?通过websocket接收文件并启动下载对话框
谢谢!
还没有,没有。新的File API目前只涵盖阅读。 更新:如果您只需要在cutting-edge (and to date, non-IE) browsers上执行此操作,请参阅Peter's answer,您可以在data:
URI方案中执行此操作。
通常的做法是将文件通过HTTP接收到隐藏的iframe中,使用Content-Disposition: attachment
触发文件下载对话框,而不是通过Web套接字接收。
你需要建立一个dataUri并用它打开一个新窗口。特定的mimetypes可以触发浏览器的自动另存为对话框。
示例数据URI:"data:application/octet-stream,base64" + base64binary
+1没想好,它甚至似乎工作:http://jsbin.com/acohaz有[一些浏览器兼容性问题(http://caniuse.com/# feat = datauri) - 特别是即使IE9不支持以这种方式使用'data:'URI,但如果你真的需要将数据保存在客户端,然后启动下载窗口,那么这是唯一的游戏。 – 2012-03-26 11:49:49