如何将自定义流转换为可读流

时间:2019-04-14 12:35:36

标签: javascript amazon-s3 jszip

我有一些自定义流(https://stuk.github.io/jszip/documentation/api_zipobject/internal_stream.html),需要将其转换为Readable流或Amazon S3 Storage(https://aws-amplify.github.io/docs/js/storage#put)可接受的任何流。一切都在浏览器的客户端上处理。

JSZip的问题在于您可以异步创建zip文件(https://stuk.github.io/jszip/documentation/api_jszip/generate_async.htmlhttps://stuk.github.io/jszip/documentation/api_streamhelper/accumulate.html),但是对于大型文件收集,它需要大量的内存。

有了JSzip内部流,我得到了很多数据,就像这样:

zip
.generateInternalStream({type:"uint8array"})
.on('data', function (data, metadata) {
    // chunk data is always Uint8Array
    // metadata contains for example currentFile and percent, see the generateInternalStream doc.
})

我的想法是将此流转换为S3 Storage(https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#putObject-property)可以接受的内容。我的猜测是ReadableStream。当我传递internalStream本身时,S3不会接受它。

这样,我可以节省客户端浏览器占用的大量内存。现在,对于600MB的文件,该库需要大约800MB的内存,并且在此过程之后还没有清理...在浏览器中甚至可以做到这一点吗?

0 个答案:

没有答案