2016-10-05 4 views
0

:この取り掛かる方法についてダウンロードURLを持つFirebaseストレージファイルbytes/blobを取得し、JSZipを使用して圧縮しますか? JSZip使用例

zip.file(/*get firebase storage file using url */); 
    zip.generateAsync({type:"blob"}) 
    .then(function (blob) { 
     FileSaver.saveAs(blob, "hello.zip"); 
}); 

任意のアイデア?

+0

これを把握しましたか?私が現在取り組んでいるウェブサイトでそれを行う必要があります。ありがとう –

答えて

1

Download Files on Webは、ファイルをダウンロードする方法と、configure CORS(ブラウザで直接データをダウンロードすることが必須)を示しています。

JSZipは、コンテンツとしての約束をサポートしています。それぞれの非同期ダウンロードを約束することができます。

// raw xhr, fetch, or your favorite ajax library 
// just remember, you want: 
// - to download **binary** data (jQuery's $.ajax won't work out of the box for example) 
// - to return a promise of the content 
function downloadUrlAsPromise (url) { 
    return new Promise(function (resolve, reject) { 
    var xhr = new XMLHttpRequest(); 
    xhr.open('GET', url); 
    xhr.responseType = "blob"; 
    xhr.onreadystatechange = function(evt) { 
     if (xhr.readyState === 4) { 
     if (xhr.status === 200) { 
      resolve(xhr.response); 
     } else { 
      reject(new Error("Ajax error for " + url + ": " + xhr.status)); 
     } 
     } 
    }); 
    xhr.send(); 
    }); 
} 

// now, we can link firebase and JSZip: 
var path = "images/stars.jpg"; 
var contentP = storageRef.child(path).getDownloadURL().then(downloadUrlAsPromise); 
zip.file(path, contentP); 
+0

このコードはCORSに対処せずに確実に動作しますか? Firebase Storageはあなたのローカルな起源ではありません。 –

+0

CORS設定が必要です。これは、同じドキュメントページに記載されています。この点を明確にするために私の答えを編集します。 –

関連する問題