【发布时间】:2014-12-16 12:05:01
【问题描述】:
我想在浏览器中实现客户端文件解密。它从服务器获取解密文件,并应在浏览器中对其进行解密,并显示 另存为 对话框以保存解密文件。它也应该适用于大文件(1 GB 或更多)。
我有以下策略:
- 使用
XMLHttpRequest和responseType = 'blob'下载文件。 - 通过转换
XMLHttpRequest给出的 Blob 进行解密。 - 将解密后的 Blob 作为
objectURL提供给用户。
解密可以像流转换一样工作,它从下载的 Blob 中读取块,解密数据并写入输出 Blob。
但是据我所知,这仅适用于当前浏览器,前提是您可以将整个文件加载到内存中(您需要将完整的解密 blob 存储在内存中,然后才能创建 objectURL)。当前的Blob、XMLHttpRequest 和createObjectURL 接口似乎不支持任何分块读/写,如Mozilla Developer Network 所述。
Blob 是不可变的,并且在浏览器中似乎没有对二进制数据的流式支持。
有什么方法可以用当前的浏览器来实现吗?
【问题讨论】:
标签: javascript ajax file fileapi