angularjs下载损坏的zip文件

时间:2017-03-13 18:25:25

标签: javascript angularjs blob

在我的角度应用程序中,我需要下载一个zip文件,下载会定期开始,但是客户端会下载一个损坏的zip文件,其大小只有15个字节。 这是请求的代码:

$http.post('/api/download/',data, {
          dataType : "binary",
          processData : false,
          accept:'application/zip',
          Encoding: 'gzip',
          responseType:'arraybuffer'})

这就是我处理成功回应的方式:

function() {
   var data = {}
   data.files = $scope.selectedFiles
   FileService.download(data,function(resp){
       var blob = new Blob([resp], {type: "application/octet-stream"})
       console.log('response',resp)
       FileSaver.saveAs(blob,'registrazioni.zip',(err) => {
                              console.log('saved success,error',err);
       })                     
   })
}

我读了许多类似的问题,但他们的解决方案并不适用于我

2 个答案:

答案 0 :(得分:1)

尝试在Github上的FileSaver上检查此错误:saving Zip file problems

答案 1 :(得分:0)

首先,您需要将responseType设置为arraybuffer.See sending_and_Receiving_Binary_Data。所以你的代码会喜欢这个:

?"CSV_Export_" & Format(Now(), "yyyy-MM-dd hh_mm_ss")
CSV_Export_2017-05-08 15_25_13

在控制器中:

$http.post('/postUrlHere',{myParams}, {responseType:'arraybuffer'})
  .success(function (response) {
       var file = new Blob([response], {type: 'application/pdf'});
       var fileURL = URL.createObjectURL(file);
});

在html页面中:

$scope.cont = $sce.trustAsResourceUrl(fileURL);

此代码将帮助您解决问题。