一、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/n/131150.html
微信扫一扫
支付宝扫一扫