Spring Boot的檔案上傳
Spring Boot的檔案上傳並不需要單獨進行。當前端進行請求時,所要上傳的檔案作為請求的一個引數即可,與其他型別引數相同。服務端接收時,只需要對這個檔案引數使用MultipartFile型別接收即可。
由於檔案上傳的引數無法直接拼接到URL中,所以只能是post請求。
如圖,用postman來測試,使用post請求,在body中共傳入3個引數:
- photo:圖片檔案。型別為File,Value選擇本地的檔案。
- param0:字串。
- param1:字串。
對於服務端,接收前端傳入的這3個引數:
@RequestMapping(value = "/upload")
public Boolean upload(@RequestParam("photo") MultipartFile file, @RequestParam("param0") String param0, @RequestParam("param1") String param1) {
if (file == null) return false;
try{
String basePath = "D:/save/";
FileInputStream fileInputStream = (FileInputStream) (file.getInputStream());
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(basePath + file.getOriginalFilename()));
byte[] bs = new byte[1024];
int len;
while ((len = fileInputStream.read(bs)) != -1) {
bos.write(bs, 0, len);
}
bos.flush();
bos.close();
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}
如上,使用MultipartFile接收檔案,使用兩個String來接收param0和param1。
然後操作File儲存到本地即可。
通常的檔案處理思路是:將檔案儲存在本地,其基礎路徑儲存在配置檔案中,同時要在tomcat中對該路徑進行對映。然後將擴充套件路徑和檔名儲存在資料庫中。當前端進行請求時,從資料庫中取出擴充套件路徑資訊,傳送給前端。前端將擴充套件路徑與專案路徑進行拼裝來訪問。
例如,服務端的地址為192.168.1.11:8030,工程名為Template,圖片的儲存路徑是D:/test/資料夾:
1.在Spring Boot中配置basePath:
basePath = D:/test/
2.開啟Tomcat的server.xml,在<Host>標籤下新增一個<Context>標籤用於對映:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Context debug="0" docBase="D:/test" path="/Template/photo" reloadable="true"/>
...
</Host>
其作用是將docBase對映到path。這樣,當訪問Tomcat的path下的檔案時,Tomcat就會去docBase下尋找該檔案並返回。
3.前端向服務端傳送請求並上傳檔案hello.jpg。
4.服務端收到前端請求,將前端上傳的檔案以MultipartFile接收,然後希望儲存在分類的資料夾下,例如:
D:/test/2018/11/hello.jpg
其中basePath為D:/test/,所以擴充套件路徑為2018/11/hello.jpg。擴充套件路徑需要儲存在資料庫中。
服務端將接收到的MultipartFile以流的形式儲存到D:/test/2018/11/hello.jpg。然後將2018/11/hello.jpg存入資料庫。
5.前端向服務端請求圖片。
6.服務端從資料庫中取出圖片擴充套件路徑,為2018/11/hello.jpg。然後將該路徑返回給前端。
7.前端收到擴充套件路徑2018/11/hello.jpg,將服務端路徑與擴充套件路徑進行拼裝,為:
192.168.1.11:8030/Template/photo/2018/11/hello.jpg
然後使用該路徑請求圖片。
8.Tomcat收到請求,根據設定的對映路徑,將包含/Template/photo在內的左側路徑轉換為D:/test,於是圖片地址變為D:/test/2018/11/hello.jpg。這樣Tomcat就準確地取到了路徑,並返回給前端。
相關文章
- Spring Boot 分片上傳檔案Spring Boot
- Spring Boot 檔案上傳與下載Spring Boot
- 使用Spring Boot實現檔案上傳功能Spring Boot
- Spring 對檔案上傳下載的支援(Spring boot實現)Spring Boot
- spring-boot-route(三)實現多檔案上傳Springboot
- Spring Boot 2.x(十六):玩轉vue檔案上傳Spring BootVue
- Spring Boot+Vue 檔案上傳,如何攜帶令牌資訊?Spring BootVue
- 使用Spring實現上傳檔案Spring
- Spring mvc檔案上傳實現SpringMVC
- Spring Cloud Feign的檔案上傳實現SpringCloud
- 在Spring Boot程式中上傳和下載檔案Spring Boot
- spring boot 圖片上傳Spring Boot
- spring cloud feign 檔案上傳和檔案下載SpringCloud
- Spring Boot 配置檔案Spring Boot
- Spring Boot + Vue 前後端分離,兩種檔案上傳方式總結Spring BootVue後端
- Spring Boot的配置檔案管理技巧Spring Boot
- spring mvc(註解)上傳檔案的簡單例子SpringMVC單例
- 檔案上傳之三基於flash的檔案上傳
- 基於Base64編/解碼演算法的Spring Boot檔案上傳技術解析演算法Spring Boot
- 單個檔案上傳和批量檔案上傳
- spring boot配置檔案相關Spring Boot
- Spring Boot 配置檔案總結Spring Boot
- spring boot 執行sql檔案Spring BootSQL
- 檔案上傳
- 上傳檔案的陷阱
- 使用spring-webmvc6實現檔案上傳SpringWebMVC
- 曹工雜談:Linux伺服器上,Spring Boot 原地修改 jar 包配置檔案/替換class檔案,免去重複上傳的麻煩Linux伺服器Spring BootJAR
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- Spring Boot MVC 單張圖片和多張圖片上傳 和通用檔案下載Spring BootMVC
- Spring webflux 整合 Mendmix 上傳元件上傳檔案到阿里雲騰訊雲SpringWebUX元件阿里
- Spring Boot中用@RequestMapping 提供 Zip 檔案Spring BootAPP
- Spring boot + Vue axios 檔案下載Spring BootVueiOS
- Spring MVC 檔案上傳、Restful、表單校驗框架SpringMVCREST框架
- spring cloud+spring boot 電子商務spring boot獲取配置檔案的屬性CloudSpring Boot
- Laravel 中的檔案上傳Laravel
- 前端大檔案上傳/分片上傳前端
- PHP上傳檔案PHP
- 檔案上傳概述