2017-04-06 6 views
0

私は、複数のファイルをzipに保存してダウンロードするためにjsZipを使用しています。その繰り返しの配列名をurls配列からどのように出力するのか分かりません。各繰り返しでforEachの内部に配列の値を出力します

URL配列はそれぞれ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'); 
      });    
     }); 
    } 
    }); 
}); 

答えて

1

ファイル名がforeachで使用する無名関数に渡されたurlパラメータに格納されています。したがって

は、単に実際には、あなたが本当にfilenameという第二の可変を必要としない url

var filename = url; 

使用し、任意の繰り返しで、ファイル名にアクセスするには、単に

のように見えるためにあなたの後の行を修正することができ
zip.file('./temp/' + url, data, {binary:true}); 
+0

なぜ起こるのかわかりません。連結を別の行に移動して結果を表示しようとしましたか? 'var filename = './temp/' + url; console.log(ファイル名); ' – domwrap

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; 

}); 
関連する問題