【发布时间】:2018-11-12 05:47:12
【问题描述】:
我有一个反应环境,我将小块文件上传到 s3。现在我也应该从浏览器本身上传 zip,但处于解压缩状态。经过大量发现,我制定了以下内容,
jsZip.loadAsync(zipFileAsBuffer).then(function (zip) {
Object.keys(zip.files).forEach(function (filename) {
console.log(filename)
zip.files[filename].async('string').then(function (fileData) {
})
})
})
稍后,当我为分块执行 fileData.byteLength 时,它给出了一个错误,提示找不到未定义的字节长度。我认为这是因为我正在使用的进程需要缓冲区,但我从 jsZip 获得了 blob。如何将 blob 转换为缓冲区,或者如果需要更好的方法,请告知。
【问题讨论】:
-
您想解压缩 zip 文件的内容,然后上传该 zip 文件中的每个文件,对吗?
-
@Aravind 是的。
-
猜你需要将承诺链接到一个更高的级别。或者为了简化它首先解压缩到一个文件夹,然后遍历所有文件然后上传。
-
@Aravind 存储在文件夹中对我来说不是一个选项 :) 。此外,一旦上传文件,文件链接就会到位,而不是我收到错误。
-
可能是这种情况,因为整个 zip 文件都在内存中,并且个别文件无法完全供您使用。您可以尝试的另一种选择是上传 zip 文件并通过 lambda 函数(zip 文件上传触发器)解压缩它们,以便您可以解耦解压缩和上传功能。
标签: reactjs amazon-web-services zip jszip