SpringCloud上传文件,中文文件名乱码

SpringCloud,路由zuul。
今天在做一个上传文件的功能,文件传到后台getOriginalFilename()时文件名中文乱码。
尝试了以下2种办法都不行:

  1. 对文件名重新编码:fileName = new String(fileName.getBytes(“ISO-8859-1”),”utf-8”);
  2. 设置请求参数格式: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,文件名中文没有乱码了。


这里写图片描述

猜你喜欢

转载自blog.csdn.net/Axela30W/article/details/81360108