一、问题描述
项目中,使用restTemplate上传文件,当文件名包含中文名,通过restTemplate.postForObject调用接口上传时,比如测试文件.doc会变成????.doc
二、解决方案
这里有两种方案,一种是将spring升级,升级到spring5.x,另一种是自定义converter,下面我们详解一下第二种方案
1.复制FormHttpMessageConverter类下的所有代码,新建UploadFileFormHttpMessageConverter类
2.修改getAsciiBytes方法
3.新建UploadRestTemplateUtil,替换新的converter
public class UploadRestTemplateUtil {
/**
* 获取上传文件的restTemplate
* @return
*/
public static RestTemplate getRestTemplate() {
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> messageConverters