MultipartFile上傳附件檔名處理記錄
阿新 • • 發佈:2020-12-23
技術標籤:java
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));
}