springcloud文件上传文件名乱码
springcloud文件上传文件名乱码问题multipart file取出来的文件名中文乱码。排查问题:单独的server文件上传有无问题gateway访问文件上传有无问题gateway的/zuul访问是否有问题配置spring:http:encoding:charset: UTF-8
springcloud文件上传文件名乱码
问题
multipart file取出来的文件名中文乱码。
排查问题:
-
单独的server文件上传有无问题
-
gateway访问文件上传有无问题
-
gateway的/zuul访问是否有问题
配置
spring:
http:
encoding:
charset: UTF-8
force: true
enabled: true
multipart:
max-file-size: 20Mb
max-request-size: 20Mb
server:
tomcat:
uri-encoding: UTF-8
最后:然后通过gateway的/zuul/...访问即ok
在项目中又一个上传文件的oss服务,直接调用服务的上传文件成功,如果经过网关zuul服务,上传中文名字的文件,文件名会出现乱码,最终导致上传失败,如果上传英文名字的文件,没有任何问题。怀疑网关zuul对中文做编码处理。
那么,经过网关,调用上传文件的url地址如下:
localhost:5000/oss/file/upload
这时如果出现中文文件名,上传文件的文件名会出现失败。按照上述大神的办法,直接在这个uri,前面加上”/zuul”,那么请求地址如下:
localhost:5000/zuul/oss/file/upload
测试一下,果然通过,上传中文名的文件乱码问题解决。
上传文件的接口,代码如下:
======================================================
第一步,约定传参编码格式
不管是使用httpclient,还是okhttp,都要设置传参的编码,为了统一,这里全部设置为utf-8
第二步,修改application.properties文件
增加如下配置:
- 1
- 2
- 3
- 4
此时拦截器中返回的中文已经不乱码了,但是controller中返回的数据依旧乱码。
第三步,修改controller的@RequestMapping
修改如下:
- 1
这种方法的弊端是限定了数据类型,继续查找资料,在stackoverflow上发现解决办法,是在配置类中增加如下代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
便可以解决SpringBoot的中文乱码问题了。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)