1. 程式人生 > >spring-boot-route(三)實現多檔案上傳

spring-boot-route(三)實現多檔案上傳

Spring Boot預設上傳的單個檔案大小`1MB`,一次上傳的總檔案大小為`10MB`。 單個檔案上傳使用MultipartFile引數來接收檔案,多檔案使用MultipartFile[]陣列來接收,然後遍歷它,當成單檔案來處理。 **問題一**:如何配置上傳檔案大小限制? ```java @Configuration public class FileConfig implements WebMvcConfigurer { @Bean public MultipartConfigElement multipartConfigElement(){ MultipartConfigFactory factory = new MultipartConfigFactory(); // 單個檔案大小 factory.setMaxFileSize(DataSize.parse("10240MB")); // 上傳的總檔案大小 factory.setMaxRequestSize(DataSize.parse("20480MB")); return factory.createMultipartConfig(); } } ``` **思考**:SpringBoot專案推薦使用jar包的方式來執行專案,而實際應用中我們也發現jar包執行專案更加方便。但是當打完jar包後,這個jar的大小就固定好了,上傳的檔案肯定傳不到jar包裡面了。SpringBoot提供了一種方式,將檔案上傳到伺服器物理路徑下,然後做個對映關係,讓圖片可以正常被訪問,具體操作如下: ```java @Configuration public class FileConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/static/**").addResourceLocations("file:"+"D://uploadfile/"); } } ``` > addResourceHandler("/static/**")表示訪問路徑為/static/檔名,addResourceLocations("file:"+"D://uploadfile/")表示檔案儲存的物理路徑,"file:"為固定寫法。 ### 檔案上傳後臺實現 ```java @RestController @Slf4j public class FileUpload { @PostMapping("uploadFile") public List uploadFile(@RequestParam("files") MultipartFile[] files) { // 儲存上傳成功的檔名,響應給客戶端