java入門006~springboot實現多文件的上傳(java多文件的上傳)

本節內容是創建在上一節內容的基礎上,若是沒有看上節內容,請查看上一節內容《springboot實現單個文件上傳(圖片 文檔 視頻 音頻均可以上傳)》html

準備工做

  1. 開發工具:IntelliJ idea(須要破解,前面章節有講)java

  2. 建立一個springboot項目(前面章節有講)linux

  3. 建立一個用來上傳文件的html文件git

  4. 建立一個用來接收文件的controllergithub

一,建立uploads.html用來選擇多個文件

先來看下上一節的upload.html單文件上傳的頁面spring

image

再來看下本節的uploads.html多文件上傳的頁面小程序

image

對比下能夠看到,多文件上傳只須要多一個 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> 
複製代碼

二,定義接收多文件的controller文件

image

能夠看出,咱們就在上一節單文件上傳的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,點擊綠色箭頭(最簡便,提倡)

image

2,點擊main方法前的綠色箭頭

image

3,命令行輸入 mvn spring-boot:run

image

四,驗證

1,輸入下圖的連接,進入文件選擇頁

image

2,選擇多個文件,咱們這裏選擇3個圖片,一個視頻

image

image

3,點擊上傳,而後上傳成功以下圖

image

4,查看圖片,能夠經過上圖的連接查看已經傳到後臺的圖片

image

5,查看視頻(這樣就能夠在線查看已經上傳到服務器的視頻了)

image

到這裏,咱們多個文件的上傳也成功的實現了。

視頻講解地址:edu.csdn.net/course/deta…

源碼地址:github.com/qiushi123/s…

往期回顧

相關文章
相關標籤/搜索