JavaScript で複数のダウンロード URL を 1 つの zip ファイルに送信し、その zip ファイルをダウンロードすることは可能ですか。ほとんどの場合、私のWebページには1つのボタンがあり、クリックすると、ダウンロードURLからすべてのファイルのzipファイルがzipに圧縮されてダウンロードされますか?
jszip またはそのようなツールを使用する必要があると思います。これはまったく可能ですか、どこから始めるべきかについて何かアドバイスはありますか?
JavaScript で複数のダウンロード URL を 1 つの zip ファイルに送信し、その zip ファイルをダウンロードすることは可能ですか。ほとんどの場合、私のWebページには1つのボタンがあり、クリックすると、ダウンロードURLからすべてのファイルのzipファイルがzipに圧縮されてダウンロードされますか?
jszip またはそのようなツールを使用する必要があると思います。これはまったく可能ですか、どこから始めるべきかについて何かアドバイスはありますか?
最近、同じ問題を解決する必要があり、JSZipUtilsを使用して解決策を見つけました。
解決策はここにありますhttp://plnkr.co/edit/vWARo0dXbkgzmjyoRNi0?p=preview
ユーザーのブラウザを介して圧縮してダウンロードしたい2つのファイルがあり、getBinaryContent(path, callback)
両方のファイルで関数を呼び出します。ここでのパスは、ファイルが保存されている場所です。
2 つのファイルは、.wav ファイルと .json ファイルです。それらはそれぞれ異なる方法で処理する必要がある{base64:true,binary:true}
ため、 .wav ファイルと{binary:true}
json ファイルをJSZipの関数ファイルの引数として使用する必要があります。
コードはここにもあります
var file_confirmation=[false,false];
var file_name=["test1.wav","test.json"];
var urlList =["test.wav","test.json"];
var filenameSave ="myZip";
function zipFiles(id,urls)
{
zip = new JSZip();
JSZipUtils.getBinaryContent(urls[0],function (err, data)
{
if(!err)
{
var dic={base64:true,binary:true}; //WAV File Encoding
zip.file(file_name[0], data, dic);
file_confirmation[0]=true;
downloadZipIfAllReady(id);
}
});
JSZipUtils.getBinaryContent(urls[1],function (err, data)
{
if(!err)
{
var dic={binary:true}; //JSON File Encoding
zip.file(file_name[1], data, dic);
file_confirmation[1]=true;
downloadZipIfAllReady(id);
}
});
}
function downloadZipIfAllReady(id)
{
if(file_confirmation.every(function(element, index, array) {return element;}))
{
zip.generateAsync({type:"blob"})
.then(function(content)
{
var a = document.querySelector("#"+id);
a.download = filenameSave;
a.href = URL.createObjectURL(content);
a.click();
});
}
}
$(document).ready(function()
{
zipFiles("a_id",urlList);
})