SpringBoot實(shí)現(xiàn)單文件與多文件上傳功能
1.單文件上傳
首先創(chuàng)建一個(gè)Spring Boot項(xiàng)目,并添加spring-boot-starter-web依賴(lài)
然后創(chuàng)建一個(gè)upload.jsp文件,做一個(gè)簡(jiǎn)單的文件上傳頁(yè)面,具體代碼如下:
<%@ 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="請(qǐng)選擇文件" name="uploadFile">
? ? ? ? <input type="submit" value="點(diǎn)擊上傳">
? ? </form>
</body>
</html>上傳接口是wjsc/upload,注意請(qǐng)求方法是post,enctype是multipart/form-data
然后創(chuàng)建上傳文件接口:
@RequestMapping("/wjsc")
@RestController
public class UploadController {
? ? /**
? ? ?* 文件上傳
? ? ?*/
? ? @PostMapping("/upload")
? ? //MultipartFile接受前臺(tái)傳過(guò)來(lái)的文件
? ? public String upload(MultipartFile uploadFile,HttpServletRequest req){
? ? ? ? SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd/");
? ? ? ? //設(shè)置上傳文件的保存路徑為項(xiàng)目運(yùn)行目錄下的uploadFile文件夾
? ? ? ? String realPath = req.getSession().getServletContext().getRealPath("/uploadFile/");
? ? ? ? //獲取當(dāng)前日期對(duì)所上傳的文件進(jìn)行歸類(lèi)保存
? ? ? ? String format = sdf.format(new Date());
? ? ? ? File folder = new File(realPath+format);
? ? ? ? if (!folder.isDirectory()){//判斷是否為目錄
? ? ? ? ? ? folder.mkdirs();//不是目錄就創(chuàng)建目錄
? ? ? ? }
? ? ? ? //給上傳的文件重命名
? ? ? ? String oldName = uploadFile.getOriginalFilename();//獲取文件名稱(chēng)
? ? ? ? String newName = UUID.randomUUID().toString()+oldName.substring(oldName.lastIndexOf("."),oldName.length());//設(shè)置新文件名
? ? ? ? try{
? ? ? ? ? ? //文件保存操作
? ? ? ? ? ? uploadFile.transferTo(new File(folder,newName));
? ? ? ? ? ? //生成文件訪(fǎng)問(wèn)路徑
? ? ? ? ? ? String filePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort()+"/uploadFile/"+format+newName;
? ? ? ? ? ? return filePath;
? ? ? ? }catch (Exception e){
? ? ? ? ? ? e.printStackTrace();
? ? ? ? }
? ? ? ? return "上傳失敗";
?
? ? }
}注意:MultipartFile變量名命名要與jsp中上傳文件的name一致,不然會(huì)接收不到文件
最后測(cè)試:
運(yùn)行項(xiàng)目,在瀏覽器中訪(fǎng)問(wèn)upload.jsp頁(yè)面進(jìn)行文件上傳

上傳成功后會(huì)返回文件訪(fǎng)問(wèn)路徑,用這個(gè)路徑就可以訪(fǎng)問(wèn)到剛剛上傳的圖片

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="請(qǐng)選擇文件" name="uploadFiles" multiple>
? ? ? ? <input type="submit" value="點(diǎn)擊上傳">
? ? </form>
</body>
</html>然后修改上傳文件接口:
/**
? ? ?* 多文件上傳
? ? ?*/
? ? @PostMapping("/uploads")
? ? public String uploads(MultipartFile[] uploadFiles,HttpServletRequest req) {
? ? ? ? //遍歷uploadFiles數(shù)組分別儲(chǔ)存
? ? }控制器里邊的核心邏輯和單文件上傳是一樣的,只是多一個(gè)遍歷的步驟。
到此這篇關(guān)于SpringBoot實(shí)現(xiàn)單文件與多文件上傳功能的文章就介紹到這了,更多相關(guān)SpringBoot實(shí)現(xiàn)文件上傳功能內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java Swing 非常漂亮外觀(guān)Nimbus的使用方法實(shí)例
Java Swing 非常漂亮外觀(guān)Nimbus的使用方法實(shí)例,需要的朋友可以參考一下2013-02-02
SpringCloud?服務(wù)注冊(cè)中的nacos實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了SpringCloud?服務(wù)注冊(cè)之nacos實(shí)現(xiàn)過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
idea 設(shè)置鼠標(biāo)懸停(放上)彈出注釋的方法
這篇文章主要介紹了idea 設(shè)置鼠標(biāo)懸停(放上)彈出注釋的方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
springboot+redis分布式鎖實(shí)現(xiàn)模擬搶單
這篇文章主要介紹了springboot+redis分布式鎖實(shí)現(xiàn)模擬搶單,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03
SpringBoot整合Spring?Boot?Admin實(shí)現(xiàn)服務(wù)監(jiān)控的方法
這篇文章主要介紹了SpringBoot整合Spring?Boot?Admin實(shí)現(xiàn)服務(wù)監(jiān)控,內(nèi)容包括Server端服務(wù)開(kāi)發(fā),Client端服務(wù)開(kāi)發(fā)其中Spring Boot Admin還可以對(duì)其監(jiān)控的服務(wù)提供告警功能,如服務(wù)宕機(jī)時(shí),可以及時(shí)以郵件方式通知運(yùn)維人員,感興趣的朋友跟隨小編一起看看吧2022-03-03
Java中l(wèi)ong類(lèi)型與Long類(lèi)型的區(qū)別和大小比較詳解
這篇文章主要給大家介紹了Java中l(wèi)ong類(lèi)型與Long類(lèi)型區(qū)別和大小比較的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11

