问题背景
在测试IE下文件上传的时候,发现使用IE浏览器上传文件,在代码中通过getOriginalFilename
获取文件名的时候,获取的是全部的文件路径,我不是单纯的文件名
问题原因
当在lE浏览器中上传文件时,MlultipartFile
中的getOriginalFilename()
方法可能会返回包含完整文件路径的字符串,而不是只返回文件名。
这是因为在IE中,文件选择对话框的默认选项是“文件名"而不是”文件类型”,因此会在<input type=file”>
元素中包括完整的文件路径。
解决方式
- 使用
FilenameUtils
下的getIame
import org.apache.commons.io.FilenameUtils;
// ...
String originalFilename = file.getOriginalFilename();
String filename = FilenameUtils.getName(originalFilename);
- 使用Java 7中的NIO.2 API来获取文件名
import java.nio.file.Path;
import java.nio.file.Paths;
// ...
String originalFilename = file.getOriginalFilename();
Path path = Paths.get(originalFilename);
String filename = path.getFileName().toString();