如何在react.js中实现jszip

时间:2018-10-18 21:15:58

标签: javascript api promise redux-saga jszip

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

LISTAGG(Y,',')WITHINGROUP(ORDERBYYDESC)             
------------------------------------------------------
2019,2018,2017,2016,2015,2014,2013,2012,2011,2010,2009

}

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

我检查了标头中的有效载荷,并且目标字段为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文件?

现在,我可以在Redux-saga中捕获该zip文件,但是当我将其保存在数据库中时,它没有给出扩展名,而是仅将其命名为“ blob”。

saga.js

[object Promise]

2 个答案:

答案 0 :(得分:1)

要下载并命名.zip文件夹,您将需要file-saver中的saveAs()

import { saveAs } from "file-saver";

  zip
    .generateAsync({
      type: "blob"
    })
    .then(content => {
      saveAs(content, "fileName.zip");
    });

答案 1 :(得分:0)

发生的事情是.generateAsync正在返回承诺。您将必须等到诺言兑现或被兑现之后,才能使用数据。

Promise是使用异步操作时JS中的核心概念。您可以阅读有关承诺here

的更多信息
import zipTargetFiles from '/path'

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