SpringBoot實現單文件與多文件上傳功能
1.單文件上傳
首先創建一個Spring Boot
項目,並添加spring-boot-starter-web
依賴
然後創建一個upload.jsp
文件,做一個簡單的文件上傳頁面,具體代碼如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="${pageContext.request.contextPath}/wjsc/upload" method="post" enctype="multipart/form-data"> <input type="file" value="請選擇文件" name="uploadFile"> <input type="submit" value="點擊上傳"> </form> </body> </html>
上傳接口是wjsc/upload
,註意請求方法是post
,enctype
是multipart/form-data
然後創建上傳文件接口:
@RequestMapping("/wjsc") @RestController public class UploadController { /** * 文件上傳 */ @PostMapping("/upload") //MultipartFile接受前臺傳過來的文件 public String upload(MultipartFile uploadFile,HttpServletRequest req){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/"); //設置上傳文件的保存路徑為項目運行目錄下的uploadFile文件夾 String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/"); //獲取當前日期對所上傳的文件進行歸類保存 String format = sdf.format(new Date()); File folder = new File(realPath+format); if (!folder.isDirectory()){//判斷是否為目錄 folder.mkdirs();//不是目錄就創建目錄 } //給上傳的文件重命名 String oldName = uploadFile.getOriginalFilename();//獲取文件名稱 String newName = UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf("."),oldName.length());//設置新文件名 try{ //文件保存操作 uploadFile.transferTo(new File(folder,newName)); //生成文件訪問路徑 String filePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+"/uploadFile/"+format+newName; return filePath; }catch (Exception e){ e.printStackTrace(); } return "上傳失敗"; } }
註意:MultipartFile變量名命名要與jsp中上傳文件的name一致,不然會接收不到文件
最後測試:
運行項目,在瀏覽器中訪問upload.jsp
頁面進行文件上傳
上傳成功後會返回文件訪問路徑,用這個路徑就可以訪問到剛剛上傳的圖片
項目中也可以看到剛剛上傳的圖片成功瞭
至此,一個簡單的單文件上傳就完成瞭.
2.多文件上傳
多文件上傳和單文件上傳基本一致,首先修改jsp文件,代碼如下:
<
%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="${pageContext.request.contextPath}/wjsc/upload" method="post" enctype="multipart/form-data"> <input type="file" value="請選擇文件" name="uploadFiles" multiple> <input type="submit" value="點擊上傳"> </form> </body> </html>
然後修改上傳文件接口:
/** * 多文件上傳 */ @PostMapping("/uploads") public String uploads(MultipartFile[] uploadFiles,HttpServletRequest req) { //遍歷uploadFiles數組分別儲存 }
控制器裡邊的核心邏輯和單文件上傳是一樣的,隻是多一個遍歷的步驟。
到此這篇關於SpringBoot實現單文件與多文件上傳功能的文章就介紹到這瞭,更多相關SpringBoot實現文件上傳功能內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!