每次迭代时在forEach中打印出数组值

时间:2017-04-06 04:04:36

标签: javascript jszip

我使用jsZip将多个文件保存为zip并下载。我无法弄清楚如何从urls数组中输出该迭代的数组名称。

每个urls数组都应该是var filename = "";内的文件名,但是无法找到打印出每个数组名称的方法。

var zip = new JSZip();
var count = 0;

var urls = [
    "FirstFile.pdf",
    "SecondFile.pdf",
];

urls.forEach(function(url)
{

  //if iteration #1, then echo firstFile.pdf below, 
  //if iteration #2 echo SecondFile.pdf below so it saves the files inside the zip.
  var filename = "output urls array here as name";


  JSZipUtils.getBinaryContent(url, function (err, data) {
     if(err) {
        throw err; // or handle the error
     }
     zip.file('./temp/' + filename, data, {binary:true});
     count++;

     if (count == urls.length)
     {
       zip.generateAsync({type:'blob'}).then(function(content)
       {
          $( ".download" ).click(function() {
            saveAs(content, 'FileZip.zip');
          });             
       });
     }
  });
});

2 个答案:

答案 0 :(得分:1)

 urls.forEach(function(url)
{

  //if iteration #1, then echo firstFile.pdf below, 
  //if iteration #2 echo SecondFile.pdf below so it saves the files inside the zip.
  var filename = url;

});

答案 1 :(得分:1)

文件名存储在url参数中,该参数传递给与foreach一起使用的匿名函数。

因此,要在任何迭代中访问文件名,只需使用url

即可
var filename = url;

事实上,你真的不需要第二个名为filename的变量,你可以简单地修改后面的行看起来像

 zip.file('./temp/' + url, data, {binary:true});