2016-03-28 9 views
0

Javascript kodumda, eşlenen bir dizi belge konumum var (Knockout ile).Zip ve İndirme katsayıları javascript ile PDF belgeleri

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

Bu belgeler Javascript kullanılarak Zip ve Bu dosyalara yüklenebilir mi?

+0

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

+0

Teşekkür ederim, deneyeceğim ve nasıl gideceğini size bildireceğim. Teşekkürler! – user3378165

+0

@levi Örnekleriyle çalışmaya başladım (bir dosya oluşturdum) ama belgeler listemle nasıl baş edeceğimi bilmiyorum, bana bir örnek yazabiliyor musunuz? – user3378165

cevap

0

sunucuda belgeleri sıkıştırma sona erdi ve onlar sıkıştırılmış bir kez ben istemci tarafında indirebilir:

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

Ve API çağrısı:

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

Ve API C# cofr:

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

Umarım aynı sorunla karşılaşanlara yardımcı olur.