前端POST请求下载文件

前端POST请求下载文件功能

  • 下载接口没有设置权限-(例如:token,有些接口设计中需要在请求头中设置headers: {
    “Content-Type”: ‘application/json;charset=utf-8’,
    “Authorization”: token,
    })
// get请求最简单的下载文件的方式
location.herf = `https://xxxxxx.com/_modeltag/valuemodel/createExcel?id=20`
  • 接口设置了相关的token,需要设置请求头时(或者下载文件的接口请求为POST方式)
// ajax请求使用axios,在请求头中设置
---------------------axios-----------------------------

let baseURL = `https://xxxxxxx.com/_modeltag/valuemodel/`
const customizeAxios = axios.create({
  baseURL: baseURL,
  timeout: 10000,
  responseType: 'blob', // 注意responseType必须设置成blob
  headers: {
    "Content-Type": 'application/json;charset=utf-8',
    "Authorization": token,
  },
});
---------------------axios-----------------------------

----------------------React----------------------------
// 事件触发
triggerDownLoadFile = id => {
    let params = {
      id,
    };
    customizeAxios.get('createExcel', { params }).then( res => {
	this.download(res.data, res)
})};

download(data,response) {
        const type = response.headers['content-type']
        let contentDisposition = response.headers['content-disposition']
        let filename = decodeURI(contentDisposition.split('fileName=')[1] || contentDisposition.split('filename=')[1]);
        let BLOB = new Blob([data], { type: type });
        let url = window.URL.createObjectURL(BLOB);
        let link = document.createElement('a');
        link.style.display = 'none';
        link.href = url;
        link.setAttribute('download', filename)
        document.body.appendChild(link);
        link.click();
  }
----------------------React-------------------------
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值