ajax jquery 下载流文件

post请求下载文件流,重点是ajax如何设置接收类型
xhrFields: {
responseType: ‘blob’ // 重要:将响应类型设置为 ‘blob’
},

具体配置如下,不要加其他多余的配置,成功后创建a标签下载

//请求参数
 const p = {}
  $.ajax({
    url: 'xxx',
    method: 'POST',
    data:JSON.stringify(p),
    timeout: 90000,
    xhrFields: {
      responseType: 'blob'  // 重要:将响应类型设置为 'blob'
    },
    contentType: 'application/json; charset=utf-8',
    success: function(data,status,xhr) {
      // 将英文冒号转变为中文冒号
      const filename = '批量导出'
      var a = document.createElement('a');
      var url = window.URL.createObjectURL(data);
      a.href = url;
      a.download = filename;
      document.body.append(a);
      a.click();
      window.URL.revokeObjectURL(url);
      a.remove();
    },
    error: function(xhr, status, error) {
      console.error('下载文件时出错:', error);
    },
    complete: ()=>{
      // 无论成功或者失败都会执行,可以在这取消加载状态
    }
});

如果返回数据不是blob类型,可以先转换成blob再使用a标签下载

 downLoadFile (content) {
  //content 为后端返回的数据
  //如果后端返回文件名的话
  const fileName = decodeURI(res.headers['content-disposition'].split('=')[1])
  const data = new Blob([content])
   // for IE
   if (window.navigator.msSaveOrOpenBlob) {
     window.navigator.msSaveOrOpenBlob(csvData, fileName)
   } else { // for Non-IE
      var a = document.createElement('a');
      var url = window.URL.createObjectURL(data);
      a.href = url;
      a.download = filename;
      document.body.append(a);
      a.click();
      window.URL.revokeObjectURL(url);
      a.remove();
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值