转载请标明出处:
blog.csdn.net/forezp/arti…
本文出自方志朋的博客git
在项目中又一个上传文件的oss服务,直接调用服务的上传文件成功,若是通过网关zuul服务,上传中文名字的文件,文件名会出现乱码,最终致使上传失败,若是上传英文名字的文件,没有任何问题。怀疑网关zuul对中文作编码处理。github
这个问题出现以后,我我的的解决办法以下:spring
第一反应是看文档,文档地址:cloud.spring.io/spring-clou…api
粗略地看了下文档,觉得没有给出解决方案(其实已经给出,只是没有理解好文档)。狂撸源码,依然没有找到解决办法。bash
Google搜,搜到了这条Issue,github.com/spring-clou…mvc
这位大神给出的解决办法,使用zuul servlet去上传文件,而不是默认的spring mvc。使用 zuul servlet之须要在请求uri,前面加上"/zuul"便可。app
首先列出个人zuul服务的配置:测试
server.port: 5000
zuul:
routes:
oss-api:
path: /oss/**
serviceId: oss-service复制代码
oss服务上传文件的接口,代码以下:ui
@RestController
@RequestMapping("/file")
public class FileUploadController {
@PostMapping("/upload")
public RespDTO handleFileUpload(@RequestParam("file") MultipartFile file) {
//上传代码省略
return RespDTO.onSuc(upLoadResult);
}复制代码
那么,通过网关,调用上传文件的url地址以下:编码
localhost:5000/oss/file/upload
这时若是出现中文文件名,上传文件的文件名会出现失败。按照上述大神的办法,直接在这个uri,前面加上"/zuul",那么请求地址以下:
localhost:5000/zuul/oss/file/upload
测试一下,果真经过,上传中文名的文件乱码问题解决。
精彩内容不能错过!