需搭建好ssm环境
一.配置虚拟目录
二.加入jar包
三.在springmvc.xml中配置文件上传解析器
<!-- 实现图片上传(文件上传),需要配置上传解析器 --> <!-- 配置文件上传解析器必须要配置id而且id的值为接口的名字,首字母小写 --> <!-- 若配置其他属性查看CommonsFileUploadSupport.class --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置文件上传的大小,这里设置最大为1M --> <property name="maxUploadSize" value="1000000" /> </bean>
四.修改页面(此处以jsp为例)
需注意以下三点
- 有input的file类型
- 保证是post提交
- form表单必须有enctype="multipart/form-data"属性
<form id="itemForm" action="${pageContext.request.contextPath }/updateItem.action" method="post" enctype="multipart/form-data"> <input type="hidden" name="id" value="${item.id }" /> 修改商品信息: <table width="100%" border=1> <tr> <td>商品图片</td> <td> <c:if test="${item.pic !=null}"> <img src="/pic/${item.pic}" /> <br/> </c:if> <input type="file" name="pictureFile"/> </td> </tr> <tr> <td colspan="2" align="center"><input type="submit" value="提交" /> </td> </tr> </table> </form>
五.在更新商品方法中添加图片上传逻辑
@RequestMapping("updateItem") public String updateItemById(Item item, MultipartFile pictureFile) throws Exception { // 图片上传 // 设置图片名称,不能重复,可以使用uuid String picName = UUID.randomUUID().toString(); // 获取文件名 String oriName = pictureFile.getOriginalFilename(); // 获取图片后缀 String extName = oriName.substring(oriName.lastIndexOf(".")); // 开始上传 pictureFile.transferTo(new File("C:/upload/image/" + picName + extName)); // 设置图片名到商品中 item.setPic(picName + extName); // --------------------------------------------- // 更新商品 this.itemService.updateItemById(item); //保留原数据返回视图 return "forward:/itemEdit.action"; }