springmvc學習筆記(17)-上傳圖片

springmvc學習筆記(17)-上傳圖片

標籤: springmvcjava


[TOC]git


本文展現如何在springmvc中上傳圖片github

springmvc中對多部件類型解析

在修改商品頁面,添加上傳商品圖片功能。web

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

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

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

加入上傳圖片的jar

添加依賴mvc

<!-- 文件上傳 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

依賴樹app

[INFO] \- commons-fileupload:commons-fileupload:jar:1.3.1:compile
[INFO]    \- commons-io:commons-io:jar:2.2:compile

能夠看到,其實還間接依賴了commons-io:commons-io:jardom

建立圖片虛擬目錄存儲圖片

參考我以前的博文jsp

在intellij IDEA中爲web應用建立圖片虛擬目錄(詳細截圖)

也能夠直接修改tomcat的配置,在conf/server.xml文件,添加虛擬目錄.

注意:在圖片虛擬目錄中,必定將圖片目錄分級建立(提升i/o性能),通常咱們採用按日期(年、月、日)進行分級建立。

上傳圖片代碼

  • 頁面
<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方法

修改:商品修改controller方法:

@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 {
//原始名稱
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中
    itemsCustom.setPic(newFileName);

}

做者@brianway更多文章:我的網站 | CSDN | oschina

相關文章
相關標籤/搜索