如何在react.js中实现jszip?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (411)

我试图通过http请求发送之前压缩文件列表。但我被困在这里。

export default function zipTargetFiles(files) {
    if (files.length <= 1) {
        return files;
    } else {
        const zip = require('jszip')();
        for (let i = 0; i < files.length; i++) {
            zip.file(files[i].name, files[i]);
    }
    return zip.generateAsync({type:"blob"});
}

}

基本上,该函数接收文件列表并尝试将它们压缩成一个单独的.zip文件。但是,当我将其作为形成的数据发送出去时,它给出了错误,即提交的数据不是文件。

我检查了标题中的有效负载,目标字段为[object Promise]。我如何真正返回.zip文件?

提问于
用户回答回答于

发生的事情是.generateAsync回归承诺。您必须等到承诺得到满足或被拒绝才能使用数据。

在使用异步操作时,Promises是JS的核心概念。您可以在此处阅读有关承诺的更多信息

import zipTargetFiles from '/path'

zipTargetFiles( data ).then(file => {
 // Access your file here
})

扫码关注云+社区

领取腾讯云代金券