SpringCloud,路由zuul。
今天在做一个上传文件的功能,文件传到后台getOriginalFilename()时文件名中文乱码。
尝试了以下2种办法都不行:
- 对文件名重新编码:fileName = new String(fileName.getBytes(“ISO-8859-1”),”utf-8”);
- 设置请求参数格式:request.setCharacterEncoding(“utf-8”);
最后查找资料,看到这个:https://github.com/spring-cloud/spring-cloud-netflix/issues/1385
使用zuul servlet去上传文件,而不是默认的spring mvc。使用 zuul servlet需要在请求uri前面加上”/zuul”即可。
原来的此服务的请求链接:
wm-document:
path: /document/**
serviceId: wm-document
我刚开始尝试在这个服务的请求链接前加上“/zuul”请求前缀
wm-document:
path: /zuul/document/**
serviceId: wm-document
原来的请求链接是:http://localhost:8888/document/doc/upload,加上之后按理说请求链接变成:http://localhost:8888/zuul/document/doc/upload。但是启动过后请求报错找不到路径。
找到另一种方案,不改变服务的请求链接,改变zuul servlet的uri。
添加配置:
zuul:
servlet-path: /
原来的服务的链接不变。请求地址还是:http://localhost:8888/document/doc/upload
重新启动服务,ok,文件名中文没有乱码了。