Spring Boot 文件上傳與下載的示例代碼

文件的上傳及下載功能是開發人員在日常應用及編程開發中經常會遇到的 。正好最近開發需要用到此功能,雖然本人是 Android 開發人員,但還是業余客串了一下后臺開發 。
在本文中,您將學習如何使用 Spring Boot 實現 Web 服務中的文件上傳和下載功能 。首先會構建一個 REST APIs 實現上傳及下載的功能,然后使用 Postman 工具來測試這些接口 , 最后創建一個 Web 界面使用 JavaScript 調用接口演示完整的功能 。最終界面及功能如下:

Spring Boot 文件上傳與下載的示例代碼

Spring Boot 文件上傳與下載的示例代碼

項目環境
Spring Boot 文件上傳與下載的示例代碼

項目創建
開發環境為 Intellij IDEA,項目創建很簡單,按照下面的步驟創建即可:
File -> New -> Project...
選擇 Spring Initializr,點擊 Next
填寫 Group (項目域名) 和 Artifact (項目別名)
構建類型可以選擇 Maven 或 Gradle,看個人習慣
添加 Web 依賴
輸入項目名稱及保存路徑,完成創建
項目創建完畢之后就可以進行開發 , 項目的完整結構如下圖所示:
Spring Boot 文件上傳與下載的示例代碼

Spring Boot 文件上傳與下載的示例代碼

參數配置
項目創建完成之后,需要設置一些必要的參數 , 打開項目resources目錄下配置文件application.properties,在其中添加以下參數:
Spring Boot 文件上傳與下載的示例代碼

其中file.upload-dir=./uploads參數為自定義的參數,創建FileProperties.javaPOJO類 , 使配置參數可以自動綁定到POJO類 。
Spring Boot 文件上傳與下載的示例代碼

然后在@SpringBootApplication注解的類中添加@EnableConfigurationProperties注解以開啟ConfigurationProperties功能 。
SpringBootFileApplication.java
Spring Boot 文件上傳與下載的示例代碼

配置完成,以后若有file前綴開頭的參數需要配置,可直接在application.properties配置文件中配置并更新FileProperties.java即可 。
另外再創建一個上傳文件成功之后的Response響應實體類UploadFileResponse.java及異常類FileException.java來處理異常信息 。
UploadFileResponse.java
Spring Boot 文件上傳與下載的示例代碼

FileException.java
Spring Boot 文件上傳與下載的示例代碼

創建接口
下面需要創建文件上傳下載所需的 REST APIs 接口 。創建文件FileController.java 。
Spring Boot 文件上傳與下載的示例代碼


Spring Boot 文件上傳與下載的示例代碼

FileController類在接收到用戶的請求后,使用FileService類提供的storeFile()方法將文件寫入到系統中進行存儲,其存儲目錄就是之前在application.properties配置文件中的file.upload-dir參數的值./uploads 。
下載接口downloadFile()在接收到用戶請求之后 , 使用FileService類提供的loadFileAsResource()方法獲取存儲在系統中文件并返回文件供用戶下載 。
FileService.java
Spring Boot 文件上傳與下載的示例代碼

【Spring Boot 文件上傳與下載的示例代碼】
Spring Boot 文件上傳與下載的示例代碼

接口測試
在完成上述的代碼之后,打開SpringBootFileApplication.java并運行 , 運行完成之后就可以使用 Postman 進行測試了 。
單個文件上傳結果:
Spring Boot 文件上傳與下載的示例代碼

Spring Boot 文件上傳與下載的示例代碼

多個文件上傳結果:
Spring Boot 文件上傳與下載的示例代碼

Spring Boot 文件上傳與下載的示例代碼

文件下載結果:
Spring Boot 文件上傳與下載的示例代碼

Spring Boot 文件上傳與下載的示例代碼

Web 前端開發
index.html
Spring Boot 文件上傳與下載的示例代碼

main.css
Spring Boot 文件上傳與下載的示例代碼


Spring Boot 文件上傳與下載的示例代碼


Spring Boot 文件上傳與下載的示例代碼

main.js


總結
至此,文件的上傳及下載功能已完成 。在正式環境中可能還需要將上傳的文件存儲到數據庫,此處按照實際需求去處理即可 。

相關經驗推薦