问题背景

在测试IE下文件上传的时候,发现使用IE浏览器上传文件,在代码中通过getOriginalFilename获取文件名的时候,获取的是全部的文件路径,我不是单纯的文件名

问题原因

当在lE浏览器中上传文件时,MlultipartFile中的getOriginalFilename()方法可能会返回包含完整文件路径的字符串,而不是只返回文件名。
这是因为在IE中,文件选择对话框的默认选项是“文件名"而不是”文件类型”,因此会在<input type=file”>元素中包括完整的文件路径。

解决方式

  1. 使用FilenameUtils下的getIame
import org.apache.commons.io.FilenameUtils;

// ...

String originalFilename = file.getOriginalFilename();
String filename = FilenameUtils.getName(originalFilename);

  1. 使用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();