使用springmvc上传文件时一般流程为:
1.在 表单提交方式:post
2.表单编码格式:multipart/form-data
例如:
<form id="itemForm" action="${pageContext.request.contextPath }/updateItems.action"
method="post" enctype="multipart/form-data">
3.上传文件名一controller对应方法MultipartFile参数名相同
例如:
<input type="file" name="picture"/>
public ModelAndView upload(MultipartFile picture)
4.配置图片解析器
如果form表单上添加enctype="multipart/form-data",而springmvc.xml中没有配置multipart解析器,此时其它类型参数(pojo,基本类型)都不能绑定成功。
所以,主要只要form中有enctype="multipart/form-data"配置,必须要springmvc.xml中配置multipart解析器
还有一点容易被忽视的小问题就是,图片解析器的名字必须是multipartResolver负责会有图片解析器未找到错误!例如:
如果这样配置上传时图片是就会报出:Expected MultipartHttpServletRequest: is a MultipartResolver configured?异常
<bean id="resolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
解决方式也很简单只要将配置bean名字改为multipartResolver就OK了
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>