微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Angular 中使用 AXIOS 下载 ELSX 文件

如何解决在 Angular 中使用 AXIOS 下载 ELSX 文件

我正在尝试使用预签名 URL (AWS) 下载 xlsx 文件

当我尝试以下方法时,当我尝试使用 angular 时,我得到 16K 响应。然而,它是 10K kb 文件,当我在浏览器上使用 js 在纯 html 上尝试它时,它可以工作并仅下载 10kb。当我下载 10K 时,只有 xlsx 文件打开正常,否则它说文件已损坏。

而且我还观察到浏览器上的 angular 和直接 html 之间存在标题差异。

 const method = 'GET';
        const url =
            'pre-signed-url';

        axios.request({
            url,method,responseType: 'blob',//important
        }).then(({ data }) => {
            const downloadUrl = window.URL.createObjectURL(new Blob([data]));
            const link = document.createElement('a');
            link.href = downloadUrl;
            link.setAttribute('download','file.xlsx'); //any other extension
            document.body.appendChild(link);
            link.click();
            link.remove();

        });

我从 Angular 尝试时的标题

accept: application/json,text/plain,*/*
Accept-Encoding: gzip,deflate,br
Accept-Language: en-IN,en-GB;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6,zh;q=0.5
Connection: keep-alive
content-type: text/plain;charset=utf-8
Host: abc-us-east-1.s3.amazonaws.com
Origin: http://localhost:4200
Referer: http://localhost:4200/
sec-ch-ua: " Not;A Brand";v="99","Google Chrome";v="91","Chromium";v="91"
sec-ch-ua-mobile: ?0
Sec-Fetch-Dest: empty
sec-fetch-mode: cors
sec-fetch-site: cross-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/91.0.4472.124 Safari/537.36

来自直接 html 和 js 的标题

Accept: application/json,*/*
Referer
sec-ch-ua: " Not;A Brand";v="99","Chromium";v="91"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/91.0.4472.124 Safari/537.36

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。