我試圖在Spring Boot 2.0應用程序中使用新的反應式web-mvc實現。我試圖確定哪些消耗多的文件,但在使其工作:(沒有成功的方法 - 我總是得到一個415錯誤如何啓用Spring Reactive Web MVC來處理多部分文件?
一方面我有一個包含以下請求映射控制器:
。@RequestMapping(method = RequestMethod.POST, path = "/myPath/{param}/{param2}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
@ResponseBody
public Mono<Void> postFile(
@RequestBody MultipartFile data,
@PathVariable("param") String param,
@PathVariable("param2") String param2,
@RequestHeader(name = HEADER_DATE, required = false) @DateTimeFormat(pattern = DATE_FORMAT) Instant instant
){
return fileService.handleData(Mono.just(data), param, param2, instant);
}
在另一方面,我不得不對基本依賴的頂部添加一臺服務器,因爲它似乎網狀不處理多部分文件。我這樣加spring-boot-starter-tomcat
依賴這使MultipartAutoConfiguration
進行匹配和滿足應用自動配置。
當使用curl ca發佈內容時LL: curl 'Meta-Date: 20170101104532' --form "[email protected]" http://localhost:8082/myPath/foo/bar
同時調試日誌被激活(logging.level.org.springframework.web=DEBUG
)我得到這個異常:提供: org.springframework.web.server.UnsupportedMediaTypeStatusException: Request failure [status: 415, reason: "Content type 'multipart/form-data;boundary=------------------------58fa43b8f1a26de4' not supported"]
此錯誤是由它具有以下支持的媒體類型的RequestBodyArgumentResolver
拋出。
張貼之前我也看了看:
- Spring MultiPart MediaType Unsupported這似乎爲我的autoconf的報告包含以下條目不是與此有關:
MultipartAutoConfiguration#multipartResolver matched
- set content-type to utf-8 with angularjs $http添加頁眉設置
Content-Transfer-Encoding: binary
沒有改變任何東西。
我的理解是,Spring的web 5.0採用了全新的請求解碼器系統,因爲我不覺得在春天的春天4啓動應用程序這些類,有沒有處理多文件 我錯過任何DecoderHttpMessageReader
什麼?或者我應該等待一個被執行?
我認爲它是在最新的Spring 5中可用的,我已經寫了一個多部分的小演示,請點擊這裏:https://github.com/hantsy/spring-reactive-sample/tree/master/multipart,不要忘記在你的項目依賴關係中明確添加工件'nio-multipart-parser',此刻,Spring Boot 2.0.0.M3並未將其包含在webflux-starter中。 – Hantsy
這周我會檢查一下。如果正確,我會更新答案以清楚地表明它。 –