首页 > 编程语言 > 详细

springMVC学习(10)-上传图片

时间:2017-01-21 16:06:31      阅读:216      评论:0      收藏:0      [点我收藏+]

需求:在修改商品页面,添加上传商品图片功能。

SpringMVC中对多部件类型解析:

1)springmvc中配置:

技术分享
1 <!-- 文件上传 -->
2     <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
3         <!-- 设置上传文件的最大尺寸为5MB -->
4         <property name="maxUploadSize">
5             <value>5242880</value>
6         </property>
7     </bean>
View Code

需要加入的jar包:(上边的解析器就是使用下面的jar包进行图片上传)

 commons-fileupload-1.2.2.jar;

commons-io-2.4.jar

2)editItems.jsp中form的enctype要设置为“multipart/form-data”;

技术分享
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>修改商品信息</title>
10 
11 </head>
12 <body> 
13 
14 <!-- 显示错误信息 -->
15 <c:if test="${allErrors!=null}">
16     错误信息:<br/>
17     <c:forEach items="${allErrors}" var="error">
18         ${error.defaultMessage}<br/>
19     </c:forEach>
20 </c:if>
21 
22 <form id="itemForm" action="${pageContext.request.contextPath }/items/editItemsSubmit.action" method="post" enctype="multipart/form-data">
23 <input type="hidden" name="id" value="${items.id }"/>
24 修改商品信息:
25 <table width="100%" border=1>
26 <tr>
27     <td>商品名称</td>
28     <td><input type="text" name="name" value="${items.name }"/></td>
29 </tr>
30 <tr>
31     <td>商品价格</td>
32     <td><input type="text" name="price" value="${items.price }"/></td>
33 </tr>
34 <tr>
35     <td>商品生产日期</td>
36     <td><input type="text" name="createtime" value="<fmt:formatDate value="${items.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/></td>
37 </tr>
38 <tr>
39     <td>商品图片</td>
40     <td>
41         <c:if test="${items.pic !=null}">
42             <img src="/pic/${items.pic}" width=100 height=100/>
43             <br/>
44         </c:if>
45         <input type="file"  name="items_pic"/> 
46     </td>
47 </tr>
48 <tr>
49     <td>商品简介</td>
50     <td>
51     <textarea rows="3" cols="30" name="detail">${items.detail }</textarea>
52     </td>
53 </tr>
54 <tr>
55 <td colspan="2" align="center"><input type="submit" value="提交"/>
56 </td>
57 </tr>
58 </table>
59 </form>
60 </body>
61 </html>
View Code

3)controller中代码:

这里是设置tomcat的虚拟目录的:在tomcat中图片访问路径是/pic,真实的物理地址是D:\upload\images;

技术分享

对应tomcat conf/server.xml中的配置是:

<Context docBase="D:\upload\images" path="/pic" reloadable="false"/>

Contorller处理上传文件,并将文件名设置到数据库代码:

技术分享
 1 //商品信息修改提交
 2     @RequestMapping("/editItemsSubmit")
 3     public String editItemsSubmit(Model model,
 4                                   HttpServletRequest request,
 5                                   Integer id, 
 6                                   @Validated(value={ValidGroup1.class}) ItemsCustom itemsCustom,BindingResult bindingResult,
 7                                   MultipartFile items_pic)
 8                                  throws Exception {
 9         if(bindingResult.hasErrors()){
10              List<ObjectError> allErrors = bindingResult.getAllErrors();
11              for(ObjectError objectError : allErrors){
12                  System.out.println(objectError.getDefaultMessage());
13              }
14              
15             // 将错误信息传到页面
16             model.addAttribute("allErrors", allErrors);
17             
18             //可以直接使用model将提交pojo回显到页面
19             model.addAttribute("items", itemsCustom);
20             
21             return "items/editItems";
22         }
23         
24         String originalFilename = items_pic.getOriginalFilename();
25         
26         if(items_pic!=null && originalFilename!=null && originalFilename.length()>0){
27             String pic_path = "D:\\upload\\images\\";
28             String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
29             
30             //新图片
31             File newFile = new File(pic_path + newFileName);
32             
33             items_pic.transferTo(newFile);
34             
35             itemsCustom.setPic(newFileName);
36         }
37         
38         itemsService.updateItems(id, itemsCustom);
39         return "success";
40     }
View Code

上传图片成功:

技术分享

 

 

4)修改代码将图片上传到项目路径中web-inf/resources/images:

 

springMVC学习(10)-上传图片

原文:http://www.cnblogs.com/tenWood/p/6337070.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!