异常如下:
Failed to convert property value of type org.springframework.web.multipart.commons.CommonsMultipartFile to required type byte[] for property photo; nested exception is java.lang.IllegalArgumentException: Cannot convert value of type [org.springframework.web.multipart.commons.CommonsMultipartFile] to required type [byte] for property photo[0]: PropertyEditor [org.springframework.beans.propertyeditors.CustomNumberEditor] returned inappropriate value of type [org.springframework.web.multipart.commons.CommonsMultipartFile]
起初我的代码是这么写的:
<input type="file" name="photo"/>
public class User { @Lob private byte[] photo; //其他的字段略去 }
@RequestMapping("/store.html") public String store(@ModelAttribute("user") User user, HttpServletRequest request, @RequestParam("photo") MultipartFile file) throws Exception { // 文件上传 if (!file.isEmpty()) { // 存入到服务器 String path = request.getSession().getServletContext().getRealPath(File.separator) + "upload" + File.separator + file.getOriginalFilename(); file.transferTo(new File(path)); } userService.save(user); return "redirect:list.html"; }
当初的想法是这样:使用SpringMVC提供的文件上传,用
<form:form action="${ctx }/user/store.html" modelAttribute="user" enctype="multipart/form-data">
@ModelAttribute("user") User user
绑定表单参数,然后一个save()方法就插入一个对象,包括photo字段。
但是这样是行不通的。表单的字段photo,与User的photo看似对应,但是MultipartFile却无法解析。
所以这个“理想”的办法行不通。
所以做了一个“折中的方法”。(可能不是最佳方案,提供一个参考)
<input type="file" name="file"/>
注意:这个字段名不是实体类的属性名
@RequestMapping("/store.html")
public String store(@ModelAttribute("user") User user, HttpServletRequest request, @RequestParam("file
") MultipartFile file)
throws Exception {
// 文件上传
if (!file.isEmpty()) {
// 插入到数据库
user.setPhoto(file.getBytes());
// 存入到服务器
String path = request.getSession().getServletContext().getRealPath(File.separator) + "upload" + File.separator
+ file.getOriginalFilename();
file.transferTo(new File(path));
}
user.setRegisteredTime(new Date());
userService.save(user);
return "redirect:list.html";
}
想法就是:表单的文件字段名与实体类的字段名不一致,然后手动赋值。
说明:当初的想法就是文件上传到服务器,并且存到数据库(真正的不一定这么做)。
我总觉得这不是最好的办法。
相关推荐
总结起来,"SpringMVC文件上传案例"涵盖了从配置SpringMVC,创建HTML表单,到编写控制器处理文件上传,再到存储文件和处理异常的整个流程。在Eclipse环境下,开发和测试这些功能变得更加直观和高效。了解并熟练掌握...
通过以上步骤,我们可以构建一个完整的SpringMVC文件上传系统。在实际项目中,可能还需要集成其他功能,如文件预览、下载、删除等,以满足更复杂的需求。了解并掌握这些知识点,对于提升SpringMVC应用的开发能力至关...
`CommonsMultipartFile`是Spring封装的文件上传类,用于存储上传文件的信息。 - **@RequestParam**:在控制器方法中,使用`@RequestParam`注解接收上传的文件,例如`MultipartFile file = request.getParameter(...
4. **实现上传控制器**:创建一个SpringMVC Controller类,定义一个处理文件上传请求的方法,使用`@RequestParam`注解接收上传的文件。使用Spring的MultipartResolver来处理多部分请求。 5. **处理上传文件**:在上...
在Spring MVC框架中,文件上传和国际化文件读取是两个重要的功能模块,它们极大地扩展了Web应用程序的功能。本文将深入探讨这两个主题,并提供详细的实现步骤和技术要点。 首先,让我们来看看文件上传。在Web应用中...
- **CommonsMultipartFile**:在 Spring MVC 中,我们通常使用 Apache Commons FileUpload 库来处理多部分文件上传。`CommonsMultipartFile` 是 Spring 提供的一个包装类,它封装了 FileUpload 库的上传文件对象。 ...
在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于...
综上所述,实现AjaxUpload在Spring MVC 4.2中的文件上传涉及前端的Ajax请求、后端的控制器处理、配置文件上传支持、异常处理以及文件存储等多个环节。这个过程需要对Spring MVC和前端交互有深入的理解。希望上述信息...
文件上传通常涉及到CommonsMultipartFile对象,而文件下载则涉及设置响应头以指示浏览器如何处理返回的内容。 3. **异常处理**:良好的异常处理可以提升应用的健壮性。SpringMVC允许自定义异常处理器,通过@...
- **上传下载功能**:使用`CommonsMultipartFile`处理文件上传,`ResponseEntity`处理文件下载。 - **模板引擎**:如Thymeleaf,用于更高效、更动态的视图渲染。 通过分析和实践这个课堂代码,学习者可以更好地掌握...
在处理文件上传方面,Spring MVC 提供了一种简单而高效的方法。本篇文章将详细讲解如何在Spring MVC中实现文件上传功能,并提供相关的示例代码。 首先,为了支持文件上传,我们需要在Spring MVC的配置文件中声明一...
4. **文件上传**:在SSM中,可以使用`CommonsMultipartFile`(Apache Commons FileUpload库)来处理上传的文件。用户通过HTML表单提交文件,服务器端的Controller接收到文件,将其保存到指定的服务器目录,并可能在...
首先,为了启用Spring MVC对文件上传的支持,我们需要在配置文件`springmvc.xml`中添加一个`multipartResolver` bean。这个bean通常使用`CommonsMultipartResolver`,它依赖于Apache Commons FileUpload库来处理文件...
在开发SpringMVC应用时,文件上传功能是一个常见的需求,用于允许用户上传图片、文档等数据到服务器。在这个场景下,`commons-fileupload-1.2.1.jar` 和 `commons-io-1.4.0.jar` 是两个关键的Java库,它们提供了处理...
4. **异常处理**:文件上传可能遇到各种问题,如文件大小限制、文件类型限制等。因此,需要进行异常处理,如`MaxUploadSizeExceededException`用于处理超大文件。 ### 文件下载 1. **ResponseEntity**:在Spring ...
- **CommonsMultipartFile**: Apache Commons FileUpload 和 Spring MVC 结合使用的类,用于处理多部分表单数据(文件上传)。 - **MultipartFile**: Spring MVC 提供的接口,用于暂时存储上传的文件信息。 - `@...
- 使用`CommonsMultipartFile`处理文件上传。 - 通过流处理实现大文件下载。 9. **RESTful API设计** - 利用注解驱动开发,轻松创建符合REST原则的API。 10. **Spring MVC与其他Spring组件集成** - 可以与...
文件上传过程中可能会出现各种异常,比如文件过大、格式不正确等。因此,编写良好的错误处理逻辑至关重要,以优雅地处理这些问题,并向用户提供有意义的反馈。 6. **安全考虑** 在处理文件上传时,要注意安全问题...
这个项目旨在展示如何在 SpringMVC 中处理文件上传与下载,以及进行基本的文件管理操作。SpringMVC 作为 Spring 框架的一部分,提供了强大的 MVC(Model-View-Controller)设计模式支持,使得开发Web应用程序更加...
12. **上传文件**:使用`CommonsMultipartFile`处理文件上传,配合`@RequestParam("file") MultipartFile file`接收文件。 13. **RESTful API设计**:Spring MVC支持创建符合REST原则的Web服务,通过HTTP动词(GET,...