在编码的时候遇到一个问题,发现之前可以正常接收文件的方法现在突然接收文件名中带有中文的文件,传输到后台之后中文就变成了问号,正好代码是spring-cloud-zuul的结构,所以就怀疑是不是和spring-cloud微服务的架构有问题,网上搜了一下之后,果然是spring-cloud-zuul的问题。
问题是在spring-cloud-zuul在解析文件名的时候会做处理:
所以解决办法有两种:
一、api接口前面 /zuul:
在不修改zuul默认配置参数的情况下,在上传文件的请求路径之前添加字符串“zuul”声明此请求被ZuulServlet处理。
例如在当前代码下,请求路径是:
localhost:8080/file/upload
那么采用方案一解决中文乱码的请求路径就是:
localhost:8080/zuul/file/upload
经过测试,中文乱码问题成功解决。
二、改zuul的配置文件:
在zuul的配置文件中添加一个如下的属性:
zuul.servlet-path=/
这种方式可以保证前端不用修改任何东西,经测试也成功解决了问题。个人感觉第二种更好一点。