一、首先 先导入上传所需要的两个基础包
二、在前段jsp的表单中设置如下
enctype="multipart/form-data" 该属性是关键(必须要写)
<form id="itemForm" action="${pageContext.request.contextPath }/updateitem.action" method="post" enctype="multipart/form-data">
另外表单内还要设置
该input中的type属性必须是file 并且要写name 该name是后台传过去的name
<input type="file" name="pictureFile"/>
<tr>
<td>商品图片</td>
<td>
<c:if test="${item.pic !=null}">
<img src="/pic/${item.pic}" width=100 height=100/>
<br/>
</c:if>
<input type="file" name="pictureFile"/>
</td>
</tr>
前台页面已经搞完。。。。。。。。。。。。。
----------------------------------------我是一条华丽的分割线 -------------------------------------------------------------
后台操作
在所需要方法设置形参 形参名字必须是上面input中的name的值
必须是public String EditItems(MultipartFile pictureFile)
public String EditItems(MultipartFile pictureFile,Items items) throws Exception {
// 图片上传
// 设置图片名称,不能重复,可以使用uuid
String picName = UUID.randomUUID().toString();
// 获取文件名
String oriName = pictureFile.getOriginalFilename();
// 获取图片后缀
String extName = oriName.substring(oriName.lastIndexOf("."));
// 开始上传
pictureFile.transferTo(new File("F:/upload/" + picName + extName));
// 设置图片名到商品中
items.setPic(picName + extName);
//然后把数据存到数据库中去 数据库中的是该图片的名称 通过该名称 就可以找到本地的图片
//更新修改商品列表
itemsService.updateitem(items);
return "forward:/itemEdit.action";
}
关键地方 就是在springMvc中配置
<!-- 文件上传,id必须设置为multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 文件上传,id必须设置为multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件上传大小 单位是B -->
<property name="maxUploadSize" value="5000000" />
</bean>
基本步骤已经完成。
开始测试
上传一张图片
上传成功 页面显示
本地仓库和数据库
数据库中
与本地仓库的图片id是一致的。