ajax实现文件的下载

本文介绍了一个使用axios库实现的异步文件下载方法,包括设置响应类型为blob,处理Content-Disposition头信息获取文件名,以及根据不同MIME类型进行文件下载。
摘要由CSDN通过智能技术生成
async downloadFile (row) {
 const res = axios({
    url: '/downloadFileUrl',
    method: 'post',
    responseType: 'blob',
    headers: {
        'Content-Type': 'application/json;charset=UTF-8',
    //  'Accept': 'application/octet-stream',
    },
    data: ids
  })
    .then(res => {
      if (!res.data) {
        return
      }
    // 设置类型,与后端对齐。此处请求headers中已设定类型,如果与使用一致可以不用设置类型
    //const blob =  new Blob([res.data],{type: 'application/force-download'});
      const blob = res.data;
      const downloadUrl = URL.createObjectURL(blob);
      const filename = decodeURL(res.headers['content-disposition'].split("filename="))[1];
      const link = document.createElement('a');
      link.style.display = 'none';
      link.href = downloadUrl;
      link.setAttribute('download', filename);
      document.body.appendChild(link);
      link.click();
      // 释放URL对象所占资源
      URL.revokeObjectURL(downloadUrl);
      // 销毁节点
      document.body.removeChild(link);
    })
    .catch(res => {})
}

大致文件下载如上。在使用下载时,根据需要下载文件的类型修改 type 的值进行下载即可。

常见 MIME 类型列表 - HTTP | MDN (mozilla.org)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值