一、MultipartFile概述
MultipartFile是Spring MVC提供的一種接口,可用於在Web應用程序中處理多部分請求,其中包括文件上傳。當用戶上傳文件時,服務器通過此接口將文件讀入內存,您可以使用此對象對文件進行操作,例如修改文件名。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());
try {
//對文件進行操作
//...
return "redirect:/success";
} catch (Exception ex) {
redirectAttributes.addFlashAttribute("message",
"Your " + fileName + " is wrong!");
return "redirect:/failure";
}
}
二、修改文件名
通過MultipartFile獲取文件名,你可以對文件名進行操作,例如添加前綴或後綴,修改文件類型等。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());//獲取文件名
String newFileName = "new_" + fileName;//新文件名
try {
//對文件進行操作
//...
return "redirect:/success";
} catch (Exception ex) {
redirectAttributes.addFlashAttribute("message",
"Your " + fileName + " is wrong!");
return "redirect:/failure";
}
}
三、更改文件類型
你也可以通過修改文件名來更改文件類型。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());//獲取文件名
String newFileName = fileName.replaceAll("\\.\\w+$", ".jpg");//修改文件類型為jpg
try {
//對文件進行操作
//...
return "redirect:/success";
} catch (Exception ex) {
redirectAttributes.addFlashAttribute("message",
"Your " + fileName + " is wrong!");
return "redirect:/failure";
}
}
四、添加時間戳
為了防止文件名重複,你可以在文件名中添加時間戳。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
String fileName = StringUtils.cleanPath(file.getOriginalFilename());//獲取文件名
String newFileName = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())
+ "_" + fileName;//添加時間戳
try {
//對文件進行操作
//...
return "redirect:/success";
} catch (Exception ex) {
redirectAttributes.addFlashAttribute("message",
"Your " + fileName + " is wrong!");
return "redirect:/failure";
}
}
五、使用UUID作為文件名
UUID是唯一標識符,可以用作文件名,配合文件類型後綴,可以確保文件名的唯一性,避免文件名衝突。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String handleFileUpload(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
String fileType = StringUtils.getFilenameExtension(file.getOriginalFilename());//獲取文件類型
String newFileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + fileType;//使用UUID作為文件名
try {
//對文件進行操作
//...
return "redirect:/success";
} catch (Exception ex) {
redirectAttributes.addFlashAttribute("message",
"Your " + fileName + " is wrong!");
return "redirect:/failure";
}
}
原創文章,作者:JIEP,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/131150.html
微信掃一掃
支付寶掃一掃