Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSZip-如何使用generateAsync命名文件而不下载它_Javascript_Variables_Asynchronous_Jszip_Generate - Fatal编程技术网

Javascript JSZip-如何使用generateAsync命名文件而不下载它

Javascript JSZip-如何使用generateAsync命名文件而不下载它,javascript,variables,asynchronous,jszip,generate,Javascript,Variables,Asynchronous,Jszip,Generate,早上好,我正在使用JSZip创建一个zip,我有以下代码: for (var i = 0, f; f = content[i]; i++) { var zip = new JSZip(); zip.file(f.name, f); zip.generateAsync({type:"blob", compression:"DEFLATE", compressionOptions: { level: 9 }}) .then(function(content) {

早上好,我正在使用JSZip创建一个zip,我有以下代码:

for (var i = 0, f; f = content[i]; i++) {
    var zip = new JSZip();
    zip.file(f.name, f);
    zip.generateAsync({type:"blob", compression:"DEFLATE", compressionOptions: { level: 9 }})
    .then(function(content) {
      var item = {
        'type' : content.type,
        'size' : content.size,
        //'name' : ¿content.name?
      }
   });
}
我不想下载该文件,我想将其上载到我的服务器,但它没有属性名称,它有两个属性:类型和大小。但是我需要为文件设置一个名称。
如果我写'name':f.name,它不起作用,因为函数是异步的。
是否有人知道如何将属性名称传递给内容。
编辑:或者,如果你能告诉我如何使它不异步,那也行。
谢谢您的帮助。

使用以下方法解决:
使用调用async方法的函数,并接收ZIP和文件名

function makeZip(zip, name) {
    name = name.split('.')[0] + ".zip";
    zip.generateAsync({type:"blob", compression:"DEFLATE", compressionOptions: { level: 9 }})
      .then(function(content) {
         // see FileSaver.js
         console.log(content)
         saveAs(content, name)       
         var item = {
           'name': name,
           'type': content.type,
           'size': content.size,
           'guid': generatorguid()
         };
      });
}
然后从以下位置调用:

for (var i = 0, f; f = content[i]; i++) {
    var fZip = new JSZip();
    fZip.file(f.name, f);
    makeZip(fZip, f.name);
}