我们的应用程序完全建立在websockets上。我们不做任何HTTP请求-应答。然而,我们被文件下载困住了。如果我通过websockets接收文件内容,我可以写到用户计算机上的本地文件夹吗?
如果它有区别,我们只支持Chrome,所以如果它在其他浏览器上不起作用也没关系。
另外,我知道我可以通过HTTP做到这一点。尽量避免它,坚持websockets,因为这是整个应用程序的方式。
提前感谢!
解决方法取决于文件的大小。
如果大小小于50 MB,我会在服务器上将文件的内容编码为base64字符串,并将该字符串发送给客户端。客户端应该接收字符串的部分,将它们连接到单个结果,并存储。接收到整个字符串后,将链接(标签<a>
)添加到您的页面,并将属性href
设置为"data:<data_type>;base64,<base64_encoded_file_content>"
。<data_type>
是您的文件的mime类型,例如"text/html"或"image/png"。建议文件名添加download
属性集到文件名(不适用Chrome OS X)。
不幸的是,我没有大文件的解决方案。目前只有FileEntry API允许用JS编写文件,但根据文档,它只支持Chrome v13+,了解更多信息在这里https://developer.mozilla.org/en-US/docs/Web/API/FileEntry.