2016-03-28 51 views
0

在我的Javascript代碼中,我有一個映射數組的文檔位置(使用Knockout)。使用javascript編碼並下載倍數PDF文檔

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

這是可能的Zip和使用JavaScript下載這些文件?

+0

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

+0

謝謝你,我會試試看,並會告訴你它是怎麼回事。謝謝! – user3378165

+0

@levi我把它和他們的例子一起工作(創建一個文件),但我不知道如何用我的文檔列表編號,你能寫一個例子嗎? – user3378165

回答

0

我結束了在服務器上壓縮和解的文件,一旦它們拉上我在客戶端進行下載:

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); 
    } 
} 

我希望這將有助於那些面臨同樣問題的人。

相關問題