SpringBoot文件上傳

一、文件上傳簡介

文件上傳,是指我們把本地的文件上傳到伺服器上,以供其他用戶進行訪問、下載等操作。在Web應用的開發中,文件上傳是一個很需要注意的問題。SpringBoot為我們提供了很好的支持,為我們簡化了文件上傳的難度。下面分析一下SpringBoot如何實現文件上傳。

二、實現文件上傳

1.前端表單

在前端頁面上,需要設置一個form表單來進行文件上傳,這個表單中要設置一個<input type="file">元素,以供用戶進行文件選擇。

<form action="fileupload" method="POST" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <input type="submit" value="上傳文件" />
</form>

2.Controller層

在Controller層中,需要使用@RequestParam註解來獲取文件上傳的信息,再使用MultipartFile類來進行文件上傳。

@RestController
public class FileUploadController {
    
    @PostMapping("/fileupload")
    public String handleFileUpload(@RequestParam("file") MultipartFile file) {
        String fileName = file.getOriginalFilename();
        File destFile = new File("D:/temp/" + fileName);
        try {
            file.transferTo(destFile);
            return "文件上傳成功!";
        } catch (IOException e) {
            e.printStackTrace();
            return "文件上傳失敗!";
        }
    }
}

3.配置文件

在application.properties或application.yml中,需要添加上傳文件的大小限制配置和上傳文件緩存的配置,以確保能夠成功上傳文件。

#文件上傳大小限制
spring.servlet.multipart.max-file-size=10MB
#設置上傳文件臨時存儲路徑
spring.servlet.multipart.location=D:/temp

三、實現文件上傳批量處理

1.前端表單

與單文件上傳類似,需要設置多個<input type="file">元素,以供用戶進行文件選擇,注意需要添加multiple屬性,才能夠同時選擇多個文件。

<form action="fileuploads" method="POST" enctype="multipart/form-data">
    <input type="file" name="files" multiple />
    <input type="submit" value="上傳文件" />
</form>

2.Controller層

在Controller層中,需要使用@RequestParam註解來獲取多個文件上傳的信息,此時獲取到的是一個數組,需要循環處理每一個文件。

@RestController
public class FileUploadController {
    
    @PostMapping("/fileuploads")
    public String handleFileUpload(@RequestParam("files") MultipartFile[] files) {
        StringBuilder sb = new StringBuilder();
        for (MultipartFile file : files) {
            String fileName = file.getOriginalFilename();
            File destFile = new File("D:/temp/" + fileName);
            try {
                file.transferTo(destFile);
                sb.append(fileName + " ");
            } catch (IOException e) {
                e.printStackTrace();
                return "文件上傳失敗!";
            }
        }
        return "文件" + sb.toString() + "上傳成功!";
    }
}

3.配置文件

與單文件上傳相同,需要在配置文件中配置上傳文件的大小限制和上傳文件緩存的位置。

#文件上傳大小限制
spring.servlet.multipart.max-file-size=10MB
#設置上傳文件臨時存儲路徑
spring.servlet.multipart.location=D:/temp

四、文件上傳進度條顯示

1.前端頁面

在前端頁面上,需要使用JavaScript代碼來處理文件上傳進度顯示,使用HTML5的XMLHttpRequest對象進行文件上傳。

function uploadFile() {
    var files = document.getElementById("formFile").files;
    var length = files.length;
    var data = new FormData();
    for (var i=0; i<length; i++) {
        data.append('files', files[i]);
    }
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/fileuploads', true);
    xhr.onload = function () {
        document.getElementById("progress").style.display = "none";
        alert("文件上傳完成!");
    };
    xhr.upload.onprogress = function (event) {
        var progress = document.getElementById("progress");
        if (event.lengthComputable) {
            progress.value = event.loaded/event.total*100;
        }
    };
    xhr.send(data);
}

2.Controller層

在Controller層中,需要設置@CrossOrigin註解來允許跨域請求,以便前端頁面能夠訪問到後端程序。

@RestController
@CrossOrigin
public class FileUploadController {
    
    @PostMapping("/fileuploads")
    public String handleFileUpload(@RequestParam("files") MultipartFile[] files) {
        StringBuilder sb = new StringBuilder();
        for (MultipartFile file : files) {
            String fileName = file.getOriginalFilename();
            File destFile = new File("D:/temp/" + fileName);
            try {
                file.transferTo(destFile);
                sb.append(fileName + " ");
            } catch (IOException e) {
                e.printStackTrace();
                return "文件上傳失敗!";
            }
        }
        return "文件" + sb.toString() + "上傳成功!";
    }
}

五、總結

本文詳細介紹了SpringBoot如何實現文件上傳及批量上傳,以及文件上傳進度條的顯示。了解了以上內容,相信大家都能夠成功地進行文件上傳!

原創文章,作者:XUSQT,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/332113.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XUSQT的頭像XUSQT
上一篇 2025-01-21 17:29
下一篇 2025-01-21 17:30

相關推薦

  • 從ga角度解讀springboot

    springboot作為目前廣受歡迎的Java開發框架,其中的ga機制在整個開發過程中起著至關重要的作用。 一、ga是什麼 ga即Group Artifacts的縮寫,它是Mave…

    編程 2025-04-29
  • 使用 DRF 實現文件上傳

    文件上傳是 web 應用程序中最常見的需求之一,本文將介紹如何使用 Django Rest Framework (DRF) 來實現文件上傳。通過本文,你將學習到如何使用 DRF 中…

    編程 2025-04-28
  • SpringBoot Get方式請求傳參用法介紹

    本文將從以下多個方面對SpringBoot Get方式請求傳參做詳細的闡述,包括URL傳參、路徑傳參、請求頭傳參、請求體傳參等,幫助讀者更加深入地了解Get請求方式下傳參的相關知識…

    編程 2025-04-27
  • SpringBoot如何設置不輸出Info日誌

    本篇文章將帶您了解如何在SpringBoot項目中關閉Info級別日誌輸出。 一、為什麼要關閉Info日誌 在開發中,我們經常會使用Log4j、Logback等框架來輸出日誌信息,…

    編程 2025-04-27
  • 解決springboot中scanBasePackages無法讀取子包的問題

    在使用springboot搭建項目時,可能會遇到scanBasePackages無法讀取子包的問題。本文將從幾個方面詳細闡述如何解決這個問題。 一、問題描述 在使用Springbo…

    編程 2025-04-25
  • SpringBoot請求參數綁定

    解答:SpringBoot請求參數綁定是指將HTTP請求中的參數與Controller方法的參數綁定起來,使得參數的傳遞變得簡單和方便。下面我們將從多個方面對SpringBoot請…

    編程 2025-04-25
  • SpringBoot文件上傳詳解

    一、前言 隨著互聯網的發展,文件上傳成為了必備的功能之一,而SpringBoot作為目前最流行的開發框架之一,為文件上傳提供了便捷而強大的解決方案。 二、使用multipart/f…

    編程 2025-04-24
  • 使用SpringBoot開發高效的Web服務應用

    一、快速入門 SpringBoot可以讓你更快速地搭建Web應用,它為開發者提供了許多使用時省去了很多配置代碼的便利。在這裡,我們將通過一個簡單的示例來介紹如何使用SpringBo…

    編程 2025-04-24
  • 使用SpringBoot連接MySQL資料庫

    SpringBoot是一個用於構建基於Spring框架的應用程序的快速開發工具,它提供了許多函數和庫,使開發人員能夠快速構建應用程序並將其部署到雲中。同時,MySQL是一個流行的關…

    編程 2025-04-24
  • 從多個方面詳細闡述postman文件上傳的介面測試

    一、介面測試基礎 了解介面測試的基礎是進行postman文件上傳介面測試的前提。 首先,需要了解什麼是介面測試。 介面測試是對軟體系統中介面的測試,包括介面的功能測試、性能測試、安…

    編程 2025-04-24

發表回復

登錄後才能評論