在浏览器解压缩后将zip文件直接从浏览器直接上传到s3

时间:2018-11-12 05:47:13

标签: reactjs amazon-web-services zip jszip

我有一个反应环境,我正在将小块文件上传到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进行分块时会出现错误,提示无法找到undefined的byteLength。我认为这是因为我正在使用的进程需要缓冲区,但是我从jsZip获取了blob。如何将blob转换为缓冲区,或者如果需要更好的方法,请告诉。

1 个答案:

答案 0 :(得分:0)

我需要在现有代码中进行的唯一更改是使用“ ArrayBuffer”而不是“ string”。因此修改看起来像

jsZip.loadAsync(zipFileAsBuffer).then(function (zip) {
        Object.keys(zip.files).forEach(function (filename) {
            console.log(filename)
            zip.files[filename].async('ArrayBuffer').then(function (fileData) {

            })
        })
    })