multipartfile 文件名乱码
时间: 2023-11-21 08:57:00 浏览: 132
当使用Multipart/form-data格式上传文件时,如果文件名中包含中文字符,可能会出现文件名乱码的问题。这是因为HTTP协议并未给文件上传提供修改charset为utf-8的功能,而使用Multipart/form-data自带的filename无法解决中文乱码问题。解决这个问题的方法是将文件名以参数的形式传入,而不是使用MultipartFile自带的filename属性。具体实现可以参考以下代码:
```java
@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file, String fileName) throws IOException {
// 获取文件名的字节数组
byte[] fileNameBytes = fileName.getBytes("ISO-8859-1");
// 将字节数组转换为UTF-8编码的字符串
fileName = new String(fileNameBytes, "UTF-8");
// 使用新的文件名保存文件
File newFile = new File(fileName);
file.transferTo(newFile);
return "上传成功";
}
```
在上述代码中,我们首先将传入的文件名以ISO-8859-1编码获取其字节数组,然后再将字节数组转换为UTF-8编码的字符串,最后使用新的文件名保存文件。这样就可以解决MultipartFile文件名乱码的问题。
阅读全文