我正在尝试使用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);