SpringBoot的文件上傳

先在src/main/resources下新建一個static目錄用以存放html頁面,簡單的html頁面以下html

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="UTF-8">
 5 <title>SpringBoot文件上傳</title>
 6 </head>
 7 <body>
 8     <form action="FileUploadController" method="post" enctype="multipart/form-data">
 9  上傳文件: 10         <input type="file" name="filename" />
11         <br />
12         <input type="submit" />
13     </form>
14 </body>
15 </html>

注意一點時,form表單的提交方法爲 method = "post"java

而後就是Controller類的編寫,以下:
web

 1 package com.example.uploadfile.springbootupload.cont;  2 
 3 import java.io.File;  4 import java.util.HashMap;  5 import java.util.Map;  6 
 7 import org.springframework.web.bind.annotation.RequestMapping;  8 import org.springframework.web.bind.annotation.RestController;  9 import org.springframework.web.multipart.MultipartFile; 10 
11 /**
12  * 13  * @author SpringBoot文件上傳 14  */
15 @RestController // 這個類下全部的方法的返回值都會自動進行json格式的轉換
16 public class FileUploadController { 17     /*
18  * 處理文件上傳 19      */
20 
21     // 路由映射
22     @RequestMapping("/FileUploadController") 23     public Map<String, Object> fileUpload(MultipartFile filename) throws Exception { // 這裏的MultipartFile參數的命名最好和html中的同樣(也就是filename)免去轉換操做
24         System.out.print(filename.getOriginalFilename()); // 打印文件的原始名稱 25         // 將文件進行保存
26         filename.transferTo(new File("e:/" + filename.getOriginalFilename())); 27         Map<String, Object> map = new HashMap<>(); // 處理異常
28         map.put("msg", "ok"); 29         return map; 30 
31  } 32 
33 }

關於這個Controller類,上傳文件成功後在控制檯打印文件名,而後再將該文件保存至E盤spring

接着就是啓動類的編寫,以下:json

package com.example.uploadfile.springbootupload; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * * @author SpringBoot文件上傳的啓動類 */ @SpringBootApplication public class AppFile { public static void main(String[] args) { // TODO Auto-generated method stub
        SpringApplication.run(AppFile.class, args); } }

 

須要注意一點的是,「Make sure that your main class is in a root package above other classes.」springboot

 

而後構建運行就能夠執行上傳文件的操做了;app

可是當你上傳的文件大小超過10MB時,就會出現如下的錯誤。ide

 

由控制檯的輸出可知,上傳的文件超過了默認大小,因此要在application.properties中修改一下配置信息;post

一開始參照其餘博客的修改是這樣的ui

單個文件最大的大小 spring.http.multipart.maxFileSize=200MB
上傳的總文件的大小 spring.http.multipart.maxRequestSize
=200MB

可是仍是出錯,後來在spring官方指導上看到這個:

 

就試着修改爲如下的這樣

spring.servlet.multipart.maxFileSize=200MB spring.servlet.multipart.maxRequestSize=200MB

再次運行時就闊以了!

並且Spring官網上也提供了很詳細的指導!

相關文章
相關標籤/搜索