本文展示如何在springmvc中上传图片
springmvc中对多部件类型解析
在修改商品页面,添加上传商品图片功能。
在页面form中提交enctype="multipart/form-data"
的数据时,需要springmvc对multipart类型的数据进行解析。
在springmvc.xml中配置multipart类型解析器。
1 2 3 4 5 6 7 8
| <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize"> <value>5242880</value> </property> </bean>
|
加入上传图片的jar
添加依赖
1 2 3 4 5 6
| <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
|
依赖树
1 2
| [INFO] \- commons-fileupload:commons-fileupload:jar:1.3.1:compile [INFO] \- commons-io:commons-io:jar:2.2:compile
|
可以看到,其实还间接依赖了commons-io:commons-io:jar
创建图片虚拟目录存储图片
参考我之前的博文
在intellij IDEA中为web应用创建图片虚拟目录(详细截图)
也可以直接修改tomcat的配置,在conf/server.xml文件,添加虚拟目录.
注意:在图片虚拟目录中,一定将图片目录分级创建(提高i/o性能),一般我们采用按日期(年、月、日)进行分级创建。
上传图片代码
1 2 3 4 5 6 7 8 9 10
| <tr> <td>商品图片</td> <td> <c:if test="${items.pic !=null}"> <img src="/pic/${items.pic}" width=100 height=100/> <br/> </c:if> <input type="file" name="items_pic"/> </td> </tr>
|
修改:商品修改controller方法:
1 2 3 4 5 6 7 8 9 10
| @RequestMapping("/editItemsSubmit") public String editItemsSubmit( Model model, HttpServletRequest request, Integer id, @ModelAttribute("items") @Validated(value = ValidGroup1.class)ItemsCustom itemsCustom, BindingResult bindingResult, MultipartFile items_pic )throws Exception {
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| String originalFilename = items_pic.getOriginalFilename();
if(items_pic!=null && originalFilename!=null && originalFilename.length()>0){
String pic_path = "D:\\tmp\\";
String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf(".")); File newFile = new File(pic_path+newFileName);
items_pic.transferTo(newFile);
itemsCustom.setPic(newFileName);
}
|