2016-11-24 4 views
-4

jszip 2xで動作しているコードがありますが、「この方法はJSZip 3.0では削除されました。私はすでにアップグレードされたガイドをチェックしていますが、私のコードはまだ動作していません。 anglejsのzipファイルに複数の画像をダウンロードするのに助けが必要です。前もって感謝します。複数の画像をanglejs内のzipファイルにダウンロードするのに手助けが必要

var zip = new JSZip(); 
      var count = 0; 
      var zipFilename = "zipFilename.zip"; 
      var urls = [ 
       'http://54.190.15.249/photo/1476967612xyKgSfAlgHEHSt49LfnmvVw3MWTVq4.png', 
       'http://54.190.15.249/photo/1476967612xyKgSfAlgHEHSt49LfnmvVw3MWTVq4.png', 
       'http://54.190.15.249/photo/1476967612xyKgSfAlgHEHSt49LfnmvVw3MWTVq4.png' 
      ]; 

      urls.forEach(function(url){ 
       var filename = "filename"; 
       // loading a file and add it in a zip file 
       JSZipUtils.getBinaryContent(url, function (err, data) { 
        if(err) { 
         throw err; // or handle the error 
        } 
        zip.file(filename, data, {binary:true}); 
        count++; 
        if (count == urls.length) { 
         var zipFile = zip.generate({type: "blob"}); 
         saveAs(zipFile, zipFilename); 
        } 
       }); 
      }); 
+1

これは**ではありません**私のコードを書いてください... –

+1

あなたはアップグレードガイドをチェックしましたか? – TZHX

+0

ハハ。いいえ....... – baao

答えて

0

エラーはzip.generate ... JSZip v3で削除されました。 「upgrade guide」のように、約束を返すgenerateAsyncを使用する必要があります。

あなたのケースでは、あなたがJSZipUtils.getBinaryContentをラップし(hereから)結果の約束を返すように関数を記述することができますが:

/** 
* Fetch the content and return the associated promise. 
* @param {String} url the url of the content to fetch. 
* @return {Promise} the promise containing the data. 
*/ 
function urlToPromise(url) { 
    return new Promise(function(resolve, reject) { 
     JSZipUtils.getBinaryContent(url, function (err, data) { 
      if(err) { 
       reject(err); 
      } else { 
       resolve(data); 
      } 
     }); 
    }); 
} 

その後は、各URLのために、ダウンロードされたコンテンツの約束にそれを変換しますそして、あなたのジップオブジェクト(hereのような)に追加します。

urls.forEach(function(url){ 
    var filename = url.replace(/.*\//g, ""); 
    zip.file(filename, urlToPromise(url), {binary:true}); 
} 
zip.generateAsync({type:"blob"}).then(function (zipFile) { 
    saveAs(zipFile, zipFilename); 
}); 

は完全な例hereを参照してください。

関連する問題