上传文件(Uploading Files)
創建可以接收HTTP多部分文件上傳的服務器應用程序
你會建立什么
您將創建一個接受文件上傳的Spring Boot Web應用程序。您還將構建一個簡單的HTML界面來上傳測試文件。
環境依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency>創建一個應用程序類
要開始一個Spring Boot MVC應用程序,我們首先需要一個啟動器;?這里,spring-boot-starter-thymeleaf和spring-boot-starter-web已經被添加為依賴。要使用Servlet容器上傳文件,您需要注冊一個MultipartConfigElement類(它是web.xml中的<multipart-config>)。感謝Spring Boot,一切都為您自動配置!
作為自動配置Spring MVC的一部分,Spring Boot將創建一個MultipartConfigElement?bean并為文件上傳做好準備。
創建一個文件上傳控制器
初始應用程序已經包含幾個類來處理在磁盤上存儲和加載上傳的文件;?它們都在hello.storage包。將在FileUploadController中使用它們。
src/main/java/hello/FileUploadController.java
這個類被@Controller注釋,所以Spring MVC能獲得它并找到路由。每個方法都標記為@GetMapping或@PostMapping,為了將路徑和HTTP操作綁定到一個特定的控制器操作。
在這個例子中:
GET /:從StorageService中,獲取上傳的文件的當前列表,并將其加載到Thymeleaf模板中。使用MvcUriComponentsBuilder,它計算一個到實際資源的鏈接
GET /files/{filename}:如果資源存在,則加載資源;并使用"Content-Disposition"響應標頭,將其發送到瀏覽器進行下載
POST /:處理一個多部分的消息file,并將其交給StorageService以保存
為了控制器與存儲層交互,您需要StorageService。
src/main/java/hello/storage/StorageService.java
創建一個簡單的HTML模板
src/main/resources/templates/uploadForm.html
這個模板有三個部分:
頂部的Spring MVC寫閃存范圍消息的可選消息
允許用戶上傳文件的表單
從后端提供的文件列表
調整文件上傳限制
配置文件上傳時,通常對文件大小設置限制。想象一下,試圖處理5GB文件上傳!我們可以調整它的自動配置MultipartConfigElement的一些屬性設置。
src/main/resources/application.properties
spring.http.multipart.max-file-size=128KB,文件總大小不能超過128KB。
spring.http.multipart.max-request-size=128KB,一個multipart/form-data的總請求大小不能超過128KB。
您還需要一個目標文件夾來上傳文件,因此我們來增強基本Application類并添加一個Boot?CommandLineRunner,它將在啟動時刪除并重新創建該文件夾:
src/main/java/hello/Application.java
這將運行接收文件上傳的服務器端部分。日志輸出顯示。
在服務器運行時,您需要打開瀏覽器并訪問 http://localhost:8080/??以查看上載表單。
測試你的應用
有多種方法可以在我們的應用程序中測試這個特定的功能。這是一個利用MockMvc的例子,所以它不需要啟動Servlet容器:
src/test/java/hello/FileUploadTests.java
在這些測試中,我們使用各種模擬來設置與控制器和StorageService的交互,同時使用MockMultipartFile來與Servlet容器本身進行交互。
集成測試的一個例子,請查看FileUploadIntegrationTests類。
概要
恭喜!您剛剛編寫了一個使用Spring處理文件上傳的Web應用程序。
參考資料:Uploading Files
源碼:https://gitee.com/SevenDayBabyface/demo
轉載于:https://www.cnblogs.com/xsj891107/p/8459642.html
總結
以上是生活随笔為你收集整理的上传文件(Uploading Files)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python打包之pyinstaller
- 下一篇: Aiiage Camp Day4 A B