首页 新闻 赞助 找找看

vue 文件流下载xlsx 乱码如何解决

0
悬赏园豆:20 [已解决问题] 解决于 2021-03-29 17:09

这是调用

这是接口返回

这是network

触及小伙的主页 触及小伙 | 初学一级 | 园豆:8
提问于:2021-03-17 10:24
< >
分享
最佳答案
1

先让后端自己下载下来看看是不是乱码的,没准是后端的问题。。。。

收获园豆:15
diudiu1 | 小虾三级 |园豆:1031 | 2021-03-17 14:29

他自己下载是 乱码。 但是百度 上不都是这样么。 因为后端返回的是个二进制文件。所以前端设置
responseType: 'blob' ==== 具体的我也不太清楚 。看了几十篇 大同小异

触及小伙 | 园豆:8 (初学一级) | 2021-03-17 17:43

@触及小伙: header 只是作为一个标记告诉浏览器,但是不是utf8 还是要看具体的文件流,你可以让后台先改成get不要权限的然后直接再浏览器url下载试一下

diudiu1 | 园豆:1031 (小虾三级) | 2021-03-17 17:47

@diudiu1: 目前直接改成了让后端返回一个url..文件流始终都是乱码.

触及小伙 | 园豆:8 (初学一级) | 2021-03-29 17:08

@触及小伙: 返回一个url 然后访问url 时也是返回给你一个文件流

diudiu1 | 园豆:1031 (小虾三级) | 2021-03-29 17:11
其他回答(3)
0

请保存文件到本地再看。

通信的搞程序 | 园豆:1747 (小虾三级) | 2021-03-17 10:40

下载到本地的excel 里面就是乱码。

支持(0) 反对(0) 触及小伙 | 园豆:8 (初学一级) | 2021-03-17 11:25
0

下载文件不应该前端指定类型,应该后端指定类型。如果Excel应该是:application/vnd.ms-excel

也可以试试 application/octet-stream

收获园豆:5
为乐而来 | 园豆:1432 (小虾三级) | 2021-03-17 11:40

后端有设置类型

支持(0) 反对(0) 触及小伙 | 园豆:8 (初学一级) | 2021-03-17 13:54

@触及小伙: 直接在url输入excel下载地址能下载么,为什么一定要用ajax

支持(0) 反对(0) 为乐而来 | 园豆:1432 (小虾三级) | 2021-03-18 09:40
0

你后端代码没问题吗

yytxdy | 园豆:1680 (小虾三级) | 2021-03-17 11:43

这 你算是问到我了
response.setHeader("content-Type", "application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));

这是他给我发的代码 也就是设置类型跟文件名的一个转码 我也看不出来是什么

支持(0) 反对(0) 触及小伙 | 园豆:8 (初学一级) | 2021-03-17 13:56

@触及小伙: 前端改成window.location.href = window.URL.createObjectURL(new Blob([result.data], {type: 'application/vnd.ms-excel'})); 下载下来看看

支持(0) 反对(0) yytxdy | 园豆:1680 (小虾三级) | 2021-03-17 14:06

@yytxdy:

支持(0) 反对(0) 触及小伙 | 园豆:8 (初学一级) | 2021-03-17 17:35

@触及小伙: 可能后端给的数据不对呗

支持(0) 反对(0) yytxdy | 园豆:1680 (小虾三级) | 2021-03-17 18:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册