SpringCloud通过网关上传文件文件名中文乱码问题解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringCloud通过网关上传文件文件名中文乱码问题解决相关的知识,希望对你有一定的参考价值。
背景
最近做一个文件上传服务,所以接口必须经过网关(zuul)调用。前后断分离后前端使用vue开发,后台是springcloud微服务。但是在文件上传时,出现文件名中文乱码的问题,multipart file取出来的文件名中文乱码。
排除思路
1.检查前端请求头是否正确
2.检查网关是否有问题
3.比较经过网关调用接口和不经过网关直接调用接口中文是否乱码
备注:1,2,都没有问题。测试3时,发现不经过网关时,中文不会乱码,一旦经过网关就会出现乱码问题,那么问题的定位就知道了。经过网关时,肯定是zuul进行了某些处理(后面详细讲解解决方案时,进行讲解)。
解决方案
1.接口访问前加上zuul
比如说:
问题接口:http://xxxxxxx/v1/fileupload/oss/upload
修正接口:http://xxxxxxx/zuul/v1/fileupload/oss/upload
该种方案解决了中文乱码问题,但是前端需要针对上传接口做特殊处理,
这样对于前端同学来说是不合理的,前端做了代理接口,就因为乱码问题需要做特殊处理
,这并不合理。而且问题的原因在于网关做了处理,所以对于前端同学来说为此付出
不符合职责划分。
2.配置zuul的servlet-path为/
该种方式是在网关的配置文件中,加入如下配置
zuul:
servlet-path: /
该种方式是在网关解决了问题,我个人比较推荐这种方式去解决,前端后端都不需要做任何多余的处理或者特殊处理,只需要加一个配置而已。
出现问题第一反应就是进入官方文档进行查找。
Zuul文件上传代理官方文档
以上是关于SpringCloud通过网关上传文件文件名中文乱码问题解决的主要内容,如果未能解决你的问题,请参考以下文章
SpringCloud上传文件,经过Zuul,中文文件名乱码解决办法