Spring MVC 提供了多种方式来实现文件上传,其中最推荐的方式是使用 Spring 提供的方式,以下是使用 Spring 提供的方式实现文件上传的步骤:
1. 在表单提交方式中加入属性 enctype="multipart/form-data",以确保能够上传文件。
2. 在 Spring MVC 的配置文件中加入文件上传的拦截器,需要创建一个 bean,其 id 为 "multipartResolver",类为 "org.springframework.web.multipart.commons.CommonsMultipartResolver",在这个 bean 中,可以设置最大上传文件大小等参数。
3. 在控制器方法中,通过 MultipartFile 对象来接收上传的文件,需要在控制器方法中添加一个参数,类型为 MultipartFile。
以下是一个简单的 Spring MVC 文件上传控制器方法:
@RequestMapping(value = "/upload", method = RequestMethod.POST) public String handleFileUpload(@RequestParam("file") MultipartFile file, RedirectAttributes redirectAttributes) { try { // 处理文件上传逻辑 // ... redirectAttributes.addFlashAttribute("message", "You successfully uploaded " + file.getOriginalFilename() + "!"); } catch (Exception e) { redirectAttributes.addFlashAttribute("message", "Failed to upload " + file.getOriginalFilename() + " => " + e.getMessage()); } return "redirect:/uploadStatus"; }
在这个方法中,通过 @RequestParam 注解指定了上传文件的参数名称为 "file",类型为 MultipartFile,在方法体中,可以处理文件上传的逻辑,例如保存文件到磁盘等,如果上传成功,可以通过 RedirectAttributes 对象添加一个 flash attribute,以便在重定向到另一个页面时显示成功消息,如果上传失败,也可以通过 RedirectAttributes 对象添加一个 flash attribute,以便在重定向到另一个页面时显示失败消息,通过返回一个字符串指定重定向的 URL。