从字节数组下载 zip 文件

问题描述 投票:0回答:1

我有一个 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);   
    }
javascript angular typescript zip
1个回答
0
投票

在 Postman 中,您可以单击位于响应正文右上角的 ... 按钮,该按钮有一个将响应保存到文件的选项。为其指定一个 .zip 文件名并保存。

© www.soinside.com 2019 - 2024. All rights reserved.