隨筆-95  評論-31  文章-10  trackbacks-0
          需求: 
          1:上傳一個或者多個文件 
          2:同時攜帶其它text字段 

          解決: 用spring-boot很簡單,網(wǎng)上流傳的還是復(fù)雜了。

          1:搭建spring-boot,版本為1.4.3.RELEASE 
          2:只需要在application.properties里面添加如下內(nèi)容: 

          參數(shù)根據(jù)自己需要調(diào)整
          # file upload
          spring.http.multipart.enabled=true
          spring.http.multipart.file-size-threshold=0
          spring.http.multipart.max-file-size=50MB
          #spring.http.multipart.location=/uploads
          spring.http.multipart.max-request-size=100MB
          spring.http.multipart.resolve-lazily=false


          3:以上配置就完事了,不需要再配置其它的! 
          4:進(jìn)入restController 方法上這樣寫這是最簡單的配置,不需要再加consumer注解multipart/form-data,只要客戶端http請求的ContentType=multipart/form-data即可:
          @RequestMapping(value = "/save", method = RequestMethod.POST) 
          public ResponseResult saveSharecare(HttpServletRequest request, @RequestPart(value = "file") MultipartFile[] multipartFiles,@Valid ShareCareDto shareCareDto){} 

          解釋: 
          1): request不多說了,默認(rèn)獲取所有的,可以寫,也可以不寫,也可以注解加httpheader cookie等等,按你所需 
          2):上傳文件一定要加@RequestPart(value="file"),如果是多個文件(這里就是多個),value="file",表示name值就是file,多個文件name值要相等。 如果不加@RequestPart注解,httpServletRequest仍然可以獲取多個multipartFiles,但是這個方法入?yún)ultipartFiles就沒值,所以要加上該注解 
          3):sharecareDto就是你傳輸?shù)腄TO實體,這里只是個例子@Valid注解是開啟驗證,這個實體的屬性哪些必填,哪些字段大小等等的注解驗證。

          以上就是所有配置。

          問題:1:為什么這樣配置就可以上傳? spring.io官網(wǎng)給出了答案,見 https://docs.spring.io/spring-boot/docs/1.5.8.RELEASE/reference/htmlsingle/#howto-multipart-file-upload-configuration


          注: MultipartAutoConfiguration 類增加了StandardServletMultipartResolver 對Servlet 3 javax.servlet.http.Part進(jìn)行了增強,所以無需配置了。 


          客戶端http完整請求示例:

          POST /v1/sharecare/save HTTP/1.1
          Host: localhost:8080
          User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
          Accept: */*
          Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
          Accept-Encoding: gzip, deflate
          content-type: multipart/form-data; boundary=---------------------------22751826015688
          origin: moz-extension://7450cf37-12f8-4d6e-af59-921a7f04d962
          Content-Length: 426396
          token: 123456
          Connection: keep-alive
          Pragma: no-cache
          Cache-Control: no-cache
          <!-- 這里就是dto放屬性的地方 -->
          -----------------------------22751826015688
          Content-Disposition: form-data; name="headline"
          123456
          -----------------------------22751826015688
          Content-Disposition: form-data; name="file"; filename="IMG_0461.jpg"
          Content-Type: image/jpeg
          ???
          -----------------------------22751826015688
          Content-Disposition: form-data; name="file"; filename="IMG_0462.jpg"
          Content-Type: image/jpeg
          ???
          -----------------------------22751826015688


          完!





          posted on 2017-10-19 13:28 朔望魔刃 閱讀(1356) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 海门市| 涟源市| 乌鲁木齐市| 柘荣县| 高平市| 玛曲县| 阿瓦提县| 宝丰县| 兰考县| 乐至县| 比如县| 肥东县| 即墨市| 怀远县| 邯郸县| 鄯善县| 屏山县| 日照市| 榆树市| 吐鲁番市| 卫辉市| 娄烦县| 乡城县| 西充县| 乌兰浩特市| 慈溪市| 巩留县| 宜丰县| 平罗县| 海城市| 鲁山县| 易门县| 深水埗区| 河间市| 永新县| 蒲江县| 洱源县| 梅河口市| 开封县| 克东县| 锡林浩特市|