springmvc學習筆記(17)-上傳圖片
springmvc學習筆記(17)-上傳圖片
本文展示如何在springmvc中上傳圖片
springmvc中對多組件類型解析
在修改商品頁面,添加上傳商品圖片功能。
在頁面form中提交enctype="multipart/form-data"
的資料時,需要springmvc對multipart類型的資料進行解析。
在springmvc.xml中配置multipart類型解析器。
5242880
加入上傳圖片的jar
添加依賴
commons-fileupload commons-fileupload 1.3.1
依賴樹
[INFO] \- commons-fileupload:commons-fileupload:jar:1.3.1:compile[INFO] \- commons-io:commons-io:jar:2.2:compile
可以看到,其實還間接依賴了commons-io:commons-io:jar
建立圖片虛擬目錄儲存圖片
也可以直接修改tomcat的配置,在conf/server.xml檔案,添加虛擬目錄.
注意:在圖片虛擬目錄中,一定將圖片目錄分級建立(提高i/o效能),一般我們採用按日期(年、月、日)進行分級建立。
上傳圖片字碼頁面
<code class="language-jsp hljs xml"> 商品圖片 <c:if test="${items.pic !=null}"> <img data-cke-saved-src="http://www.2cto.com/uploadfile/Collfiles/20160315/20160315091339193." src="http://www.2cto.com/uploadfile/Collfiles/20160315/20160315091339193." width="100" height="100/"> </c:if> <input type="file" data-cke-saved-name="items_pic" name="items_pic" data-cke-editable="1" contenteditable="false"> </code>
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);}