一、MultipartFile簡介
MultipartFile是Springframework中的接口,它代表了上傳文件的數據類型。MultipartFile允許我們獲取文件名、大小、內容類型以及文件字節流等信息。它是Springboot實現文件上傳的核心接口。
二、實現多文件上傳
在Springboot中,我們可以非常方便地實現多文件上傳,具體步驟如下:
1、在前端實現多文件選擇
{@code <input type="file" name="file1" multiple>
<input type="file" name="file2" multiple>
}
在前端頁面中,我們使用`<input type="file">`標籤來實現文件選擇,設置`multiple`屬性以支持多文件選擇。
2、編寫Controller接收上傳文件
{@code @RestController public class FileUploadController { @PostMapping("/upload") public String upload(@RequestParam("file1") MultipartFile[] file1, @RequestParam("file2") MultipartFile[] file2) { //...具體實現略 return "upload success"; } } }
在Controller中,我們通過`@RequestParam`註解來接收上傳文件,可以通過設置數組類型或者List類型來支持多文件上傳。需要注意的是,參數名必須與前端頁面中`<input>`標籤中`name`屬性值一致。
3、處理上傳文件
{@code Service public class FileUploadService { public void uploadFiles(MultipartFile[] files) throws Exception { for (MultipartFile file : files) { // 獲取文件名 String fileName = file.getOriginalFilename(); // 獲取文件大小 long fileSize = file.getSize(); // 獲取文件類型 String fileType = file.getContentType(); // 獲取文件字節流 byte[] fileBytes = file.getBytes(); // ...對上傳文件進行保存、處理等操作 } } } }
在處理上傳文件的Service中,我們可以通過MultipartFile提供的方法獲取文件相關信息,如文件名、大小、類型、字節流等。可以根據這些信息對上傳文件進行保存、處理等操作。
三、文件上傳異常處理
在文件上傳的過程中,可能會出現各種異常,Springboot提供了多種方式進行異常處理。
1、全局異常處理
{@code @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public String handleException(Exception e) { return "服務器異常:" + e.getMessage(); } } }
可以通過@ControllerAdvice註解設置全局異常處理的類,使用@ExceptionHandler註解來處理Exception類的異常。
2、上傳文件大小限制
{@code @Configuration public class MultipartConfigConfig { @Bean public MultipartConfigElement multipartConfigElement() { MultipartConfigFactory factory = new MultipartConfigFactory(); // 設置單個文件大小限制 factory.setMaxFileSize(DataSize.ofMegabytes(10)); // 設置總上傳文件大小限制 factory.setMaxRequestSize(DataSize.ofMegabytes(100)); return factory.createMultipartConfig(); } } }
可以通過@Configuration註解設置上傳文件大小限制。在MultipartConfigFactory中設置單個文件大小限制和總上傳文件大小限制,並通過@Bean註解將MultipartConfigElement注入到Spring容器中。
3、文件類型限制
{@code @Component public class FileUploadComponent { private List allowTypes = Arrays.asList("image/jpeg", "image/png", "image/gif"); public void uploadFiles(MultipartFile[] files) throws Exception { for (MultipartFile file : files) { String fileType = file.getContentType(); if (!allowTypes.contains(fileType)) { throw new Exception("不支持的文件類型"); } // ...對上傳文件進行保存、處理等操作 } } } }
可以通過在上傳文件前判斷文件類型是否符合要求來進行文件類型限制。在FileUploadComponent中設置允許上傳文件類型的列表,如果上傳的文件類型不在列表中,則拋出不支持的文件類型異常。
四、總結
通過以上步驟,我們可以在Springboot中輕鬆實現MultipartFile多文件上傳功能。在實際開發中,我們可以根據具體需求進行上傳文件大小限制、文件類型限制等處理,並進行異常處理來提高系統的健壯性。
原創文章,作者:GZHQI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/333060.html