1、编写页面;页面如果采用from表单,必须给类型 enctype="multipart/form-data";建议使用VUE
<form enctype="multipart/form-data" method="post">
做个简单处理,有图显示无图上传
<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>
2、在springmvc的配置文件中配置文件上传
<!-- 上传图片配置实现类 id不变--> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 上传图片的大小 B--> <property name="maxUploadSize" value="500000"/> </bean>
3、controller中接收图片简单处理(例子直接写在这里了)
这里需要用到两个工具包 commons-fileupload-1.2.2.jar commons-fileupload-1.2.2.jar
这里xml配置的 CommonsMultipartResolver 是 MultipartFile 的实现类 ;实际上是通过spring实例化了一个文件上传的工具类;用它的接口调用完成我们的操作
@RequestMapping(value = "/updateitem.action") public String updateItem(MultipartFile pictureFile, QueryVo Vo) throws IllegalStateException, IOException { // 图片重命名 String name = UUID.randomUUID().toString().replaceAll("-", "."); // 通过工具包获取后缀 String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename()); //保存图片 pictureFile.transferTo(new File("F:\\upload\\" + name + "." + ext)); //图片名称更新到数据库 Vo.getItems().setPic(name + "." + ext); Integer status = itemService.updateItem(Vo.getItems()); if (status > 0) { return "redirect:/itemEdit.action?id=" + Vo.getItems().getId(); // forward } else { return "editItem"; } }
4、通过ip+端口号+pic+name访问需要配置一个虚拟服务简单的贴个图STS中图片虚拟服务配置
挺简单的注意的就是
1、配置图片上传的实现类的时候id别写错了,
2、form表单一定要提交格式 enctype="multipart/form-data" 并且为post