getOriginalFilename()
获取原始文件名。
在chorme中获取是文件名+后缀,在IE模式中获取的是路径+文件名+后缀。
如 文件路径 D:/temp/1.txt
chorme上传文件,getOriginalFilename() == “1.txt”;
IE模式上传文件,getOriginalFilename() ==“D:/temp/1.txt”
所以要对文件名要进行统一处理,避免文件名处理问题。
for (MultipartFile file:files) {
String filename = file.getOriginalFilename();
// 看是否unix带路径格式
int unixSep = filename.lastIndexOf('/');
// 看是否win带路径格式
int winSep = filename.lastIndexOf('\\');
// 检查分隔符长度 winSep == -1 && unixSep == -1 则filename不带路径格式
int pos = (winSep > unixSep ? winSep : unixSep);
if (pos != -1) {
// 只获取分隔符后文件名
filename = filename.substring(pos + 1);
}
//分隔文件名 与 后缀
String[] split = filename.split("\\.");
String preFilename = split[0];//文件名称
String sufFilename = split[1];//格式后缀
.......
//保存文件至服务器
file.transferTo(new File(newPath+newFileName));
}