一、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"; } }