8

JavaScript で複数のダウンロード URL を 1 つの zip ファイルに送信し、その zip ファイルをダウンロードすることは可能ですか。ほとんどの場合、私のWebページには1つのボタンがあり、クリックすると、ダウンロードURLからすべてのファイルのzipファイルがzipに圧縮されてダウンロードされますか?

jszip またはそのようなツールを使用する必要があると思います。これはまったく可能ですか、どこから始めるべきかについて何かアドバイスはありますか?

4

2 に答える 2

2

最近、同じ問題を解決する必要があり、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);

})
于 2016-08-22T22:49:23.840 に答える