我有一个 api,它将 zip 文件作为字节数组发送(不是单个文件的字节数组,而是整个压缩文件)。当我在邮递员中触发 api 时,我得到随机字符(如下所示)。
当我以 zip 文件形式下载此响应(作为邮递员中的选项:发送到文件并下载)时,我可以将其解压缩并提取实际文件。我的目标是在 Angular 和 TypeScript 中实现同样的目标。
我尝试将响应转换为 blob 并下载它,正如在线多个地方的建议,包括这个问题。所以我做了类似的事情
const blob = new Blob([response], { type: 'application/zip' });
const url = window.URL.createObjectURL(blob);
window.open(url);
但是我下载的结果 zip 文件显示“无法打开:空存档”。我不确定我在这里缺少什么。我尝试先将响应转换为 arrayBuffer (使用 this),然后再应用这些步骤,正如网上另一个地方所建议的那样。但这也没有用。 有人可以帮助我理解我做错了什么吗?谢谢
我在js文件中调用API:
function downloadAzureRT(params) {
return $http({
method: 'GET',
url: API.public('protectionSources/downloadArtFile'),
params: params || {},
}).then(function downloadAwsARTResp(resp){
return resp.data || {};
});
}
然后在ts文件中调用这个函数。
downloadART() {
this.ajsPubSourceService.downloadAzureRT({
filePath: ART_FILE_PATH,
fileName: ART_FILE_NAME,
})
.then((response) => {
const blob = new Blob([response], { type: 'application/zip' });
const url = window.URL.createObjectURL(blob);
window.open(url);
}
在 Postman 中,您可以单击位于响应正文右上角的 ... 按钮,该按钮有一个将响应保存到文件的选项。为其指定一个 .zip 文件名并保存。