SpringBoot實現(xiàn)單文件與多文件上傳功能
1.單文件上傳
首先創(chuàng)建一個Spring Boot
項目,并添加spring-boot-starter-web
依賴
然后創(chuàng)建一個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
然后創(chuàng)建上傳文件接口:
@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();//不是目錄就創(chuàng)建目錄 ? ? ? ? } ? ? ? ? //給上傳的文件重命名 ? ? ? ? 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數(shù)組分別儲存 ? ? }
控制器里邊的核心邏輯和單文件上傳是一樣的,只是多一個遍歷的步驟。
到此這篇關于SpringBoot實現(xiàn)單文件與多文件上傳功能的文章就介紹到這了,更多相關SpringBoot實現(xiàn)文件上傳功能內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java Swing 非常漂亮外觀Nimbus的使用方法實例
Java Swing 非常漂亮外觀Nimbus的使用方法實例,需要的朋友可以參考一下2013-02-02SpringCloud?服務注冊中的nacos實現(xiàn)過程
這篇文章主要介紹了SpringCloud?服務注冊之nacos實現(xiàn)過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03springboot+redis分布式鎖實現(xiàn)模擬搶單
這篇文章主要介紹了springboot+redis分布式鎖實現(xiàn)模擬搶單,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-03-03SpringBoot整合Spring?Boot?Admin實現(xiàn)服務監(jiān)控的方法
這篇文章主要介紹了SpringBoot整合Spring?Boot?Admin實現(xiàn)服務監(jiān)控,內容包括Server端服務開發(fā),Client端服務開發(fā)其中Spring Boot Admin還可以對其監(jiān)控的服務提供告警功能,如服務宕機時,可以及時以郵件方式通知運維人員,感興趣的朋友跟隨小編一起看看吧2022-03-03Java中l(wèi)ong類型與Long類型的區(qū)別和大小比較詳解
這篇文章主要給大家介紹了Java中l(wèi)ong類型與Long類型區(qū)別和大小比較的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-11-11