7---上传图片

7.1需求

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

7.2  配置虚拟目录

在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:

<Context docBase="F:\develop\upload\temp" path="/pic" reloadable="false"/>

 访问http://localhost:8080/pic即可访问F:\develop\upload\temp下的图片。

 也可以通过eclipse配置:

7.3springmvc中对多部件类型解析

 在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。

 在springmvc.xml中配置multipart类型解析器。

 

        <!-- 文件上传 -->
    <bean id="multipartResolver"
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 设置上传文件的最大尺寸为5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
    </bean>

 

CommonsMultipartResolver解析器依赖commons-fileupload和commons-io,加入如下jar包:

7.4 图片上传

Controller中带参数    MultipartFile items_pic   (接收商品图片)

// 原始名称
String originalFilename = items_pic.getOriginalFilename();

// 上传图片
if (items_pic != null && originalFilename != null&& originalFilename.length() > 0) {

   // 存储图片的物理路径
   String pic_path = "F:\\upload\\temp\\";

   // 新的图片名称
   String newFileName = UUID.randomUUID()+ originalFilename.substring(originalFilename.lastIndexOf("."));
    
   // 新图片
   File newFile = new File(pic_path + newFileName);

   // 将内存中的数据写入磁盘
   items_pic.transferTo(newFile);

   // 将新图片名称写到itemsCustom中
   itemsCustom.setPic(newFileName);
    
}

// 调用service更新商品信息,页面需要将商品信息传到此方法
itemsService.updateItems(id, itemsCustom);

页面:

  form添加enctype="multipart/form-data":

<form id="itemForm"  action="${pageContext.request.contextPath }/items/editItemsSubmit.action" method="post" 
  enctype="multipart/form-data">
  <input type="hidden" name="id" value="${items.id }"/> 修改商品信息: <table width="100%" border=1> ... <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"/> //file的name与controller的形参一致 </td> </tr> </table> </form>

 

 

 

posted on 2016-07-25 08:34  step_step  阅读(153)  评论(0编辑  收藏  举报

导航