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