在使用ssm完成先後端對接時,總免不了前臺傳過來的文件問題,而html中的<input>框直接使用時,每每會獲取不到路徑,今天在完成圖片上傳後的來作個總結html
首先,前臺頁面java
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>圖片上傳</title> 6 </head> 7 <body> 8 <h2>圖片上傳</h2> 9 <form action="save/saveImg" method="post" enctype="multipart/form-data"> 10 圖片:<input type="file" name="upload"/><br/> 11 <input type="submit" value="提交"/> 12 </form> 13 </body> 14 </html>
配置圖片解析web
1 <!-- 配置文件上傳視圖解析器 --> 2 <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 3 <property name="maxUploadSize" value="10485760"></property> 4 <property name="defaultEncoding" value="utf-8"></property> 5 </bean>
其中 maxUploadSize 是限制上傳的圖片最大字節 defaultEncoding是設定上傳圖片編碼spring
service接口數據庫
1 package com.sp.service; 2 3 import org.springframework.web.multipart.MultipartFile; 4 5 public interface FileService { 6 7 void upLoadFile(MultipartFile upload); 8 }
實現類後端
1 package com.sp.serviceImpl; 2 3 import java.io.File; 4 import java.io.IOException; 5 6 import org.springframework.stereotype.Service; 7 import org.springframework.web.multipart.MultipartFile; 8 9 import com.sp.service.FileService; 10 11 @Service 12 public class FileServiceImpl implements FileService { 13 14 private String filePath="D:/img/"; //定義上傳文件的存放位置 15 @Override 16 public void upLoadFile(MultipartFile upload) { 17 18 String fileName = upload.getOriginalFilename(); //獲取上傳文件的名字 19 //判斷文件夾是否存在,不存在則建立 20 File file=new File(filePath); 21 22 if(!file.exists()){ 23 file.mkdirs(); 24 } 25 26 String newFilePath=filePath+fileName; //新文件的路徑 27 28 try { 29 upload.transferTo(new File(newFilePath)); //將傳來的文件寫入新建的文件 30 31 } catch (IllegalStateException | IOException e) { 32 e.printStackTrace(); 33 } 34 35 } 36 37 }
控制層app
1 package com.sp.controller; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.ResponseBody; 7 import org.springframework.web.multipart.MultipartFile; 8 9 import com.sp.service.FileService; 10 11 @Controller 12 @RequestMapping("/save") 13 public class FileController { 14 15 @Autowired 16 private FileService fileService; 17 18 @RequestMapping("/saveImg") 19 @ResponseBody 20 public String saveImg(MultipartFile upload){ 21 fileService.upLoadFile(upload); 22 return "ok"; 23 } 24 }
效果演示ide
選擇圖片post
提交後看個人d盤目錄編碼
本案例只是簡單的演示,後臺能夠對上傳的圖片名稱或者大小或者有無尺寸進行判斷,從而能夠避免傳入無效數據,同時亦能夠將本身所保存的路徑進行相應的修改後存入數據庫,便於之後數據的回顯.