本節內容是創建在上一節內容的基礎上,若是沒有看上節內容,請查看上一節內容《springboot實現單個文件上傳(圖片 文檔 視頻 音頻均可以上傳)》html
開發工具:IntelliJ idea(須要破解,前面章節有講)java
建立一個springboot項目(前面章節有講)linux
建立一個用來上傳文件的html文件git
建立一個用來接收文件的controllergithub
先來看下上一節的upload.html單文件上傳的頁面spring
再來看下本節的uploads.html多文件上傳的頁面小程序
對比下能夠看到,多文件上傳只須要多一個 multiple="multiple" 屬性就能夠了數組
下面貼出來uploads.html 完整代碼tomcat
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上傳多個文件到服務器</title>
</head>
<body>
<form action="/uploads" method="post" enctype="multipart/form-data">
<input type="file" name="uploadFiles" value="請選擇文件" multiple="multiple" >
<input type="submit" value="上傳">
</form>
</body>
</html>
複製代碼
能夠看出,咱們就在上一節單文件上傳的UploadController裏添加了一個多文件上傳的uploads方法springboot
完整代碼給你們貼出來
/**
* Created by qcl on 2019-06-11
* desc: 文件上傳
*/
@RestController
public class UploadController {
//單個文件的上傳
@PostMapping("/upload")
public String upload(MultipartFile uploadFile, HttpServletRequest request) {
/*
定義文件的存儲路徑,以下,是在linux和mac上定義的文件路徑
/private/var/folders/8x/4zvnbqmj1w33cqmzrpygzbth0000gn/T/tomcat-docbase.5206733816001100271.8080/uploadFile
*/
String realPath = request.getSession().getServletContext().getRealPath("/uploadFile/");
File dir = new File(realPath);
if (!dir.isDirectory()) {//文件目錄不存在,就建立一個
dir.mkdirs();
}
try {
String filename = uploadFile.getOriginalFilename();
//服務端保存的文件對象
File fileServer = new File(dir, filename);
System.out.println("file文件真實路徑:" + fileServer.getAbsolutePath());
//2,實現上傳
uploadFile.transferTo(fileServer);
String filePath = request.getScheme() + "://" +
request.getServerName() + ":"
+ request.getServerPort()
+ "/uploadFile/" + filename;
//3,返回可供訪問的網絡路徑
return filePath;
} catch (IOException e) {
e.printStackTrace();
}
return "上傳失敗";
}
//多個文件的上傳
@PostMapping("/uploads")
public String uploads(MultipartFile[] uploadFiles, HttpServletRequest request) {
//1,對文件數組作判空操做
if (uploadFiles == null || uploadFiles.length < 1) {
return "文件不能爲空";
}
//2,定義文件的存儲路徑,
String realPath = request.getSession().getServletContext().getRealPath("/uploadFile/");
File dir = new File(realPath);
if (!dir.isDirectory()) {//文件目錄不存在,就建立一個
dir.mkdirs();
}
try {
String filePathS = "";
//3,遍歷文件數組,一個個上傳
for (int i = 0; i < uploadFiles.length; i++) {
MultipartFile uploadFile = uploadFiles[i];
String filename = uploadFile.getOriginalFilename();
//服務端保存的文件對象
File fileServer = new File(dir, filename);
System.out.println("file文件真實路徑:" + fileServer.getAbsolutePath());
//2,實現上傳
uploadFile.transferTo(fileServer);
String filePath = request.getScheme() + "://" +
request.getServerName() + ":"
+ request.getServerPort()
+ "/uploadFile/" + filename;
filePathS = filePathS + "\n" + filePath;
}
//4,返回可供訪問的網絡路徑
return filePathS;
} catch (IOException e) {
e.printStackTrace();
}
return "上傳失敗";
}
}
複製代碼
到這裏咱們多文件上傳的代碼就所有實現了。
1,點擊綠色箭頭(最簡便,提倡)
2,點擊main方法前的綠色箭頭
3,命令行輸入 mvn spring-boot:run
1,輸入下圖的連接,進入文件選擇頁
2,選擇多個文件,咱們這裏選擇3個圖片,一個視頻
3,點擊上傳,而後上傳成功以下圖
4,查看圖片,能夠經過上圖的連接查看已經傳到後臺的圖片
5,查看視頻(這樣就能夠在線查看已經上傳到服務器的視頻了)
到這裏,咱們多個文件的上傳也成功的實現了。
視頻講解地址:edu.csdn.net/course/deta…
往期回顧