项目场景:
基于restTemplate上传文件,header格式MULTIPART_FORM_DATA
问题描述
中文文件名乱码问题
解决方案:
升级Spring-web 5.x版本
同时配置以下代码:
// 创建并配置 RestTemplate
RestTemplate restTemplate = new RestTemplate();
// 创建 FormHttpMessageConverter 并设置字符集
FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
formHttpMessageConverter.setCharset(StandardCharsets.UTF_8); // 设置表单数据的字符集
formHttpMessageConverter.setMultipartCharset(StandardCharsets.UTF_8); // 设置 multipart 的字符集
// 添加消息转换器到 RestTemplate
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
messageConverters.add(formHttpMessageConverter);
// 设置消息转换器
restTemplate.setMessageConverters(messageConverters);
Spring源代码:
如果出现javax.mail.internet.MimeUtility问题
确保你的项目包含正确的 JavaMail 依赖。如果你使用的是 Spring Boot,默认情况下它不包含 JavaMail,你需要手动添加相关依赖。
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>