异常如下:
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文件上传与下载的实现,包括UploadController和DownloadController
springMvc 文件上传,springMvc 支持单文件和多文件上传,
SpringMVC文件上传Demo代码
springMVC文件上传完美 demo,自带 jar包, 前后台代码 ,表单上传,项目直接导入即可!
springmvc上传文件controller,vue
springMVC文件上传所需jar包,亲测百分之百可用。绝对可用
com.springsource.org.apache.commons.fileupload-1.2.0.jar com.springsource.org.apache.commons.io-1.4.0.jar
SpringMVC文件上传案例
在上一篇SpringMVC基础教程的源码基础上增加了文件上传,多文件上传
本文档主要介绍了SpringMVC的ModelAndView机制,使用SpringMVC实现文件上传,下载以及全局异常处理机制
springmvc 上传文件代码 最基础的
springmvc文件上传与下载相关jar与资料案例
SpringMVC文件的上传与下载(包括单一文件与多文件上传,两种下载方式)
基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于springmvc实现文件上传下载 基于AOP的日志功能基于...
JavaEE企业级开发-----SpringMVC实现 文件的上传下载实验报告
在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传。但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的...
这是关于springMVC文件上传与下载的相关jar包,其中包括springMVCjar包,commons-fileupload组件的jar包和JSTL的相关jar包
springMVC 上传文件方式springMVC 上传文件方式springMVC 上传文件方式
SpringMVC 文件上传 进度条 java