springmvc註解開發-高級之圖片上傳

1.1    上傳圖片

 

在頁面form中提交enctype="multipart/form-data"的數據時,需要springmvc對multipart類型的數據進行解析。

 

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


1.1.1 配置虛擬目錄

在tomcat上配置圖片虛擬目錄,在tomcat下conf/server.xml中添加:

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

 

訪問http://localhost:8080/pic即可訪問F:\develop\upload\temp下的圖片。

 

注意:在圖片虛擬目錄中,一定將圖片目錄分級創建(提高i/o性能),一般我們採用按日期(年、月、日)進行分級創建。

也可以通過eclipse配置:

 

 

1.1.2 配置解析器

<!-- 文件上傳 -->

    <bean id="multipartResolver"

       class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

       <!-- 設置上傳文件的最大尺寸爲5MB -->

       <property name="maxUploadSize">

           <value>5242880</value>

       </property>

    </bean>

 

1.1.3 jar包

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

 

1.1.4 圖片上傳

u  controller:

 

//商品修改提交

    @RequestMapping("/editItemSubmit")

    public String editItemSubmit(Items items, MultipartFilepictureFile)throws Exception{

      

       //原始文件名稱

       String pictureFile_name = pictureFile.getOriginalFilename();

       //新文件名稱

       String newFileName = UUID.randomUUID().toString()+pictureFile_name.substring(pictureFile_name.lastIndexOf("."));

      

       //上傳圖片

       File uploadPic = new java.io.File("F:/develop/upload/temp/"+newFileName);

      

       if(!uploadPic.exists()){

           uploadPic.mkdirs();

       }

       //向磁盤寫文件

       pictureFile.transferTo(uploadPic);

 

.....

 

 

u  頁面:

 

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

<form id="itemForm"

       action="${pageContext.request.contextPath}/item/editItemSubmit.action"

       method="post" enctype="multipart/form-data">

       <input type="hidden"name="pic" value="${item.pic }"/>

 

 

file的name與controller形參一致:

           <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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章