1.引入相关ja包
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
2.在springmvc.xml文件中配置解析器
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
3.
在
controller
方法形参上添加
MultipartFile
类型的参数,参数名称和上传页面上
file
的名称一致,才可以绑定成功
(1)方法上的参数
MultipartFile picture
(2)上传
//实现上传图片
if (picture != null && picture.getOriginalFilename() != null && picture.getOriginalFilename() != "") {
//获取图片原始名称,目标要从原始名称中获取文件的扩展名
String originalFilename = picture.getOriginalFilename();
//得到新文件名
String newFileName = UUID.randomUUID().toString().replace("-", "") + originalFilename.substring(originalFilename.lastIndexOf("."));
//新文件
File newFile = new File("D:\\develop\\projects\\springMVC\\ssm\\src\\main\\webapp\\upload", newFileName);
//将内存中的文件内容写入磁盘上
picture.transferTo(newFile);
//更新新文件名到数据库中
items.setPic(newFileName);
}
//保存
System.out.println(items);
itemsService.saveItem(items);
4.
修改页面提交的编码enctype
<form id="itemForm" action="${pageContext.request.contextPath }/item/editItemSubmit.action" method="post"
enctype="multipart/form-data">
<tr>
<td>商品图片</td>
<%--防止修改图片没有上传,之前的图片消失的情况--%>
<input type="hidden" name="pic" value="${item.pic }" />
<td>
<c:if test="${item.pic !=null}">
<img src="/pic/${item.pic}" width=100 height=100/>
<br/>
</c:if>
<input type="file" name="picture"/>
</td>
</tr>
上边/pic采用的是虚拟路径