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
测试一下,果然通过,上传中文名的文件乱码问题解决。
上传文件的接口,代码如下:
@RestController @RequestMapping("/file") public class FileUploadController { @PostMapping("/upload") public RespDTO handleFileUpload(@RequestParam("file") MultipartFile file) { //上传代码省略 return RespDTO.onSuc(upLoadResult); }
======================================================
第一步,约定传参编码格式
不管是使用httpclient,还是okhttp,都要设置传参的编码,为了统一,这里全部设置为utf-8
第二步,修改application.properties文件
增加如下配置:
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8
- 1
- 2
- 3
- 4
此时拦截器中返回的中文已经不乱码了,但是controller中返回的数据依旧乱码。
第三步,修改controller的@RequestMapping
修改如下:
produces="text/plain;charset=UTF-8"
- 1
这种方法的弊端是限定了数据类型,继续查找资料,在stackoverflow上发现解决办法,是在配置类中增加如下代码:
@Configuration
public class CustomMVCConfiguration extends WebMvcConfigurerAdapter {
@Bean
public HttpMessageConverter<String> responseBodyConverter() {
StringHttpMessageConverter converter = new StringHttpMessageConverter(
Charset.forName("UTF-8"));
return converter;
}
@Override
public void configureMessageConverters(
List<HttpMessageConverter<?>> converters) {
super.configureMessageConverters(converters);
converters.add(responseBodyConverter());
}
@Override
public void configureContentNegotiation(
ContentNegotiationConfigurer configurer) {
configurer.favorPathExtension(false);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
便可以解决SpringBoot的中文乱码问题了。
来源:CSDN
作者:无名_四叶草
链接:https://blog.csdn.net/yueguanyun/article/details/78056618