一、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-tw/n/131150.html