通过 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 接收文件并启动下载对话框的主要内容,如果未能解决你的问题,请参考以下文章

python与html5 websocket开发聊天对话窗

[文档和源码分享] 基于QT和websocket协议的多线程文件传输

单击下载链接并出现文件保存对话框时会触发啥事件?

将 Websocket 与 Tomcat 一起使用

使用 tsung 测试 websocket 服务器

websocket接收消息再发送会发送两次