Skip to content

前端下载文件时损坏

前端下载文件时损坏可能是多种原因,这里列举两种最常见的原因(笔者这两种原因一起遇到了,排查难度直线上升愣是卡了好久)。

1、responseType未设置,这是是新手比较容易犯的错误。前端如何设置无论axios还是xhr网上都有答案。这里已二次封装过的axios为例

javascript
export function apiGetDownloadSingleM(id) {
  return request({
    url: portalPrefix + '/m/wallet/download/single/' + id,
    method: 'get',
    responseType: 'blob'
  });
}

二次封装的注意这里的responseType不要写在headers里面去了(第一次对接的时候我不仅放在了header里面还漏掉了结尾的s)

2、mockjs包,这个包会影响返回格式,可把爷整吐了。取消引入这个包就好了。

题外话

关于2为什么会意识到这一点呢,是这样的。对接的时候后端兄弟以为我太菜了(实际上也是),他用原生的xhr写了这个前端的下载功能,然后通了,顿时笔者当时无地自容,于是复制了他的原生方法到项目里来。意外发生了,同样的方法在项目了依旧是损坏的!这时我想起了论坛里讲的的mock包的问题,于是我在项目里一搜,真有,注释掉,确实是这个导致的。。。

鄂ICP备19018246号-1