我想在浏览器中实现客户端文件解密。它从服务器获取解密文件,并在浏览器中解密,显示另存为对话框以保存解密文件。它也适用于大文件(1 GB或更多)。
我有以下策略:
XMLHttpRequest
responseType = 'blob'
下载文件。XMLHttpRequest
给出的Blob来解密。objectURL
提供给用户。解密可以像流转换一样工作,它从下载的Blob中读取块,解密数据并写入输出Blob。
然而,据我所知,如果您可以将整个文件加载到内存中,则只能使用当前浏览器(您需要在创建objectURL
之前将完整的解密blob存储在内存中)。似乎Blob
,XMLHttpRequest
和createObjectURL
接口不支持任何类型的读/写,如Mozilla Developer Network所述。
Blob是不可变的,并且似乎不是浏览器中对二进制数据的流式支持。
有没有办法用当前的浏览器实现这个?
答案 0 :(得分:0)
获得Blob
responseType = 'blob';
后,您可以使用blob.slice(start, end)
获取子视图,并使用FileReader
API获取与此子视图关联的数据。