`
周一Monday
  • 浏览: 346779 次
  • 来自: 北京
社区版块
存档分类
最新评论

SpringMVC文件上传异常(CommonsMultipartFile异常)

阅读更多

异常如下:

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文件上传案例"涵盖了从配置SpringMVC,创建HTML表单,到编写控制器处理文件上传,再到存储文件和处理异常的整个流程。在Eclipse环境下,开发和测试这些功能变得更加直观和高效。了解并熟练掌握...

    springMVC上传文件.zip_springmvc_上传文件_文件上传

    通过以上步骤,我们可以构建一个完整的SpringMVC文件上传系统。在实际项目中,可能还需要集成其他功能,如文件预览、下载、删除等,以满足更复杂的需求。了解并掌握这些知识点,对于提升SpringMVC应用的开发能力至关...

    SpringMVC文件上传与下载

    `CommonsMultipartFile`是Spring封装的文件上传类,用于存储上传文件的信息。 - **@RequestParam**:在控制器方法中,使用`@RequestParam`注解接收上传的文件,例如`MultipartFile file = request.getParameter(...

    springMVC-maven 简单的附件上传,文件本地磁盘存储,

    4. **实现上传控制器**:创建一个SpringMVC Controller类,定义一个处理文件上传请求的方法,使用`@RequestParam`注解接收上传的文件。使用Spring的MultipartResolver来处理多部分请求。 5. **处理上传文件**:在上...

    springmvc学习之文件上传和国际化文件的读取

    在Spring MVC框架中,文件上传和国际化文件读取是两个重要的功能模块,它们极大地扩展了Web应用程序的功能。本文将深入探讨这两个主题,并提供详细的实现步骤和技术要点。 首先,让我们来看看文件上传。在Web应用中...

    springmvc上传下载并且保存到数据库

    - **CommonsMultipartFile**:在 Spring MVC 中,我们通常使用 Apache Commons FileUpload 库来处理多部分文件上传。`CommonsMultipartFile` 是 Spring 提供的一个包装类,它封装了 FileUpload 库的上传文件对象。 ...

    Spring MVC 文件上传下载 后端 - Java.zip

    在Spring MVC框架中,文件上传和下载是常见的功能需求,特别是在构建Web应用程序时。这个压缩包文件"Spring MVC 文件上传下载 后端 - Java.zip"包含的文档可能详细阐述了如何在Java后端实现这些功能。以下是关于...

    ajaxupload在spring mvc4.2中实现简单文件上传

    综上所述,实现AjaxUpload在Spring MVC 4.2中的文件上传涉及前端的Ajax请求、后端的控制器处理、配置文件上传支持、异常处理以及文件存储等多个环节。这个过程需要对Spring MVC和前端交互有深入的理解。希望上述信息...

    SpringMVC demo 完整源码实例包含了对数据增删改查上传下载文件的实现.zip

    文件上传通常涉及到CommonsMultipartFile对象,而文件下载则涉及设置响应头以指示浏览器如何处理返回的内容。 3. **异常处理**:良好的异常处理可以提升应用的健壮性。SpringMVC允许自定义异常处理器,通过@...

    传播智客springmvc课堂中的工程代码

    - **上传下载功能**:使用`CommonsMultipartFile`处理文件上传,`ResponseEntity`处理文件下载。 - **模板引擎**:如Thymeleaf,用于更高效、更动态的视图渲染。 通过分析和实践这个课堂代码,学习者可以更好地掌握...

    Spring MVC 文件上传的示例代码

    在处理文件上传方面,Spring MVC 提供了一种简单而高效的方法。本篇文章将详细讲解如何在Spring MVC中实现文件上传功能,并提供相关的示例代码。 首先,为了支持文件上传,我们需要在Spring MVC的配置文件中声明一...

    ssm框架下form表单实现文件上传下载

    4. **文件上传**:在SSM中,可以使用`CommonsMultipartFile`(Apache Commons FileUpload库)来处理上传的文件。用户通过HTML表单提交文件,服务器端的Controller接收到文件,将其保存到指定的服务器目录,并可能在...

    Spring MVC框架实现上传下载

    首先,为了启用Spring MVC对文件上传的支持,我们需要在配置文件`springmvc.xml`中添加一个`multipartResolver` bean。这个bean通常使用`CommonsMultipartResolver`,它依赖于Apache Commons FileUpload库来处理文件...

    上传文件必备jar包-commons.fileupload-1.2.1.jar和commons.io-1.4.0.jar

    在开发SpringMVC应用时,文件上传功能是一个常见的需求,用于允许用户上传图片、文档等数据到服务器。在这个场景下,`commons-fileupload-1.2.1.jar` 和 `commons-io-1.4.0.jar` 是两个关键的Java库,它们提供了处理...

    sprigMVC--文件上传与下载

    4. **异常处理**:文件上传可能遇到各种问题,如文件大小限制、文件类型限制等。因此,需要进行异常处理,如`MaxUploadSizeExceededException`用于处理超大文件。 ### 文件下载 1. **ResponseEntity**:在Spring ...

    spring mvc小例子

    - **CommonsMultipartFile**: Apache Commons FileUpload 和 Spring MVC 结合使用的类,用于处理多部分表单数据(文件上传)。 - **MultipartFile**: Spring MVC 提供的接口,用于暂时存储上传的文件信息。 - `@...

    SpringMVC.zip

    - 使用`CommonsMultipartFile`处理文件上传。 - 通过流处理实现大文件下载。 9. **RESTful API设计** - 利用注解驱动开发,轻松创建符合REST原则的API。 10. **Spring MVC与其他Spring组件集成** - 可以与...

    springboot uploadFile

    文件上传过程中可能会出现各种异常,比如文件过大、格式不正确等。因此,编写良好的错误处理逻辑至关重要,以优雅地处理这些问题,并向用户提供有意义的反馈。 6. **安全考虑** 在处理文件上传时,要注意安全问题...

    SpringMVCFileManager:将 Maven 用于 SpringMVC 的示例应用程序

    这个项目旨在展示如何在 SpringMVC 中处理文件上传与下载,以及进行基本的文件管理操作。SpringMVC 作为 Spring 框架的一部分,提供了强大的 MVC(Model-View-Controller)设计模式支持,使得开发Web应用程序更加...

    springMVC2.33

    12. **上传文件**:使用`CommonsMultipartFile`处理文件上传,配合`@RequestParam("file") MultipartFile file`接收文件。 13. **RESTful API设计**:Spring MVC支持创建符合REST原则的Web服务,通过HTTP动词(GET,...

Global site tag (gtag.js) - Google Analytics