通过a标签下载二进制流文件,下载文件中文乱码、下载xlsx文件所有列都在一列问题

1.后端传入二进制文件流,通过创建a标签的方法下载文件:

const url = window.URL.createObjectURL(new Blob([res]));
var a = document.createElement("a");
a.download = "文件名.xls";
a.href = url
$("body").append(a); 
a.click();
$(a).remove()
URL.revokeObjectURL(url)

问题:下载后的文件出现乱码
后端返回数据:
在这里插入图片描述
下载后出现中文乱码。

2.下载xlsx文件时,后端返回的列都显示在同一列中

在这里插入图片描述
下载文件:
在这里插入图片描述

解决:设置请求responseTypeblob

Axios.get(baseURL + '/system/userinfo/exportTemplate', { responseType: 'blob' })

3.从响应头种获取文件名称

后端可以把文件的名称放在响应头中。
在这里插入图片描述

处理:

const getFileNameByResponseHeaders = headers => {
  const cd = headers['content-disposition']
  if (cd && _.isString(cd)) {
    const cdArr = cd.split('=')
    if (cdArr && _.isArray(cdArr)) {
      return decodeURI(cdArr[1])
    }
  }
  return null
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值