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