2016-03-28 11 views
0

私のJavascriptコードでは、(Knockoutを使って)マップされたドキュメントの配列があります。Zip and Download multiple PDF document with javascript

var mappedArray = $.map(self.checkedDocs(), function (item) { return item.pdfloc() }); 

これらのドキュメントはJavascriptを使用してダウンロードできますか?

+0

https://stuk.github.io/jszip/ – levi

+0

ありがとうございます、私はそれを試して、あなたにそれがどうなるかを教えてくれます。ありがとう! – user3378165

+0

@levi私はそれらの例(ファイルを作成する)で動作するようにしましたが、私の文書リストでどのようにIDを指定するか分からないので、私に例を書いてもらえますか? – user3378165

答えて

0

は、私は、サーバー上のドキュメントをビュン終わったと、彼らはzip形式で圧縮された後、私はクライアント側でそれらをダウンロードしてください:

self.download = function() { 
    var mappedArray = $.map(self.checkedDocs(), function (item) { return item.pdfloc() }); 
    self.service.zipDocs(ko.toJSON(mappedArray), function (data) { 
     if (data == "Error") { 
      $("#modalResult").text("Error has occured, please try later."); 
      $("#modalConfirmation").dialog(); 
     } 
     else if (data == "Success") { 
      $("#modalResult").text("Your documents are being download."); 
      $("#modalConfirmation").dialog(); 
     } 
    }); 
} 

そして、APIの呼び出し:

self.zipDocs = function (docs, callback) { 
    $.ajax({ 
     url: "http://api.xxx.com/functions/zip", 
     type: "POST", 
     contentType: "application/json", 
     dataType: "binary", 
     data: docs, 
     processData: false, 
     success: function (blob) { 
      saveAs(blob, "ZippedDocuments.zip"); 
      callback("Success"); 
     }, 
     error: function (data) { 
      callback("Error"); 
     } 
    }); 
} 

そして、APIのC#のcofr:

[HttpPost] 
[Route("zip")] 
public HttpResponseMessage ZipDocs([FromBody] string[] docs) 
{ 
    using (ZipFile zip = new ZipFile()) 
    { 
     zip.AddFiles(docs, false, ""); 
     return ZipContentResult(zip); 
    } 
} 

同じ問題に直面している人に役立つことを願っています。