使用Poco :: Compress和FileSaver.js下载Zip文件

时间:2017-05-31 13:33:39

标签: javascript angularjs

我正在尝试使用angularJS中的$ http服务下载一个zip文件,我设置了:

responseType = arraybuffer 
contentType = application/zip

因此我的文件以某种方式被破坏了。我搜索了一些线程,建议对responseType =' blob'但它没有帮助。我能够看到身体的二进制内容。

我的服务器代码:

response.setStatusAndReason(HTTPResponse::HTTP_OK);
response.setKeepAlive(true);
response.setContentType("application/zip");
response.set("Content-Disposition","attachment; filename=\"logs.zip\"");
Poco::Zip::Compress compress(response.send(),false);
compress.addRecursive(Constants::LOG_FOLDER,
                      Poco::Zip::ZipCommon::CM_DEFLATE,
                      Poco::Zip::ZipCommon::CL_SUPERFAST,
                      false, "server_logs");
compress.close();

我正在使用第三方API FileSaver.js。我可以正确下载其他文件。我只是在zip文件中遇到这个问题。

客户端代码:

var headers = response.headers();
     var filename = "";
     var disposition = headers['content-disposition'];
     if (disposition && disposition.indexOf('attachment') !== -1) {
         var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
         var matches = filenameRegex.exec(disposition);
         if (matches != null && matches[1]) filename = 
         matches[1].replace(/['"]/g, '');
      }
    var file = new File([response.data], filename, {type: headers['content-
    type']});
    saveAs(file);

0 个答案:

没有答案