这是调用
这是接口返回
这是network
先让后端自己下载下来看看是不是乱码的,没准是后端的问题。。。。
他自己下载是 乱码。 但是百度 上不都是这样么。 因为后端返回的是个二进制文件。所以前端设置
responseType: 'blob' ==== 具体的我也不太清楚 。看了几十篇 大同小异
@触及小伙: header 只是作为一个标记告诉浏览器,但是不是utf8 还是要看具体的文件流,你可以让后台先改成get不要权限的然后直接再浏览器url下载试一下
@diudiu1: 目前直接改成了让后端返回一个url..文件流始终都是乱码.
@触及小伙: 返回一个url 然后访问url 时也是返回给你一个文件流
请保存文件到本地再看。
下载到本地的excel 里面就是乱码。
下载文件不应该前端指定类型,应该后端指定类型。如果Excel应该是:application/vnd.ms-excel
也可以试试 application/octet-stream
后端有设置类型
@触及小伙: 直接在url输入excel下载地址能下载么,为什么一定要用ajax
你后端代码没问题吗
这 你算是问到我了
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
这是他给我发的代码 也就是设置类型跟文件名的一个转码 我也看不出来是什么
@触及小伙: 前端改成window.location.href = window.URL.createObjectURL(new Blob([result.data], {type: 'application/vnd.ms-excel'})); 下载下来看看
@yytxdy:
@触及小伙: 可能后端给的数据不对呗