通过 websocket 接收文件并启动下载对话框
Posted
技术标签:
【中文标题】通过 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
触发文件下载对话框,而不是通过网络套接字接收它。
【讨论】:
以上是关于通过 websocket 接收文件并启动下载对话框的主要内容,如果未能解决你的问题,请参考以下文章