2017-03-28 36 views
0

我試圖在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的web 5.0採用了全新的請求解碼器系統,因爲我不覺得在春天的春天4啓動應用程序這些類,有沒有處理多文件 我錯過任何DecoderHttpMessageReader什麼?或者我應該等待一個被執行?

回答

1

好吧,看來這只是不是現在實施的,因爲它目前存在的這一功能拉入請求:Add reactive multipart request support #1201

應該有檢查這個早期...

[編輯]:這個問題有被解決併合併入Spring主分支。應該不再是一個問題。

+2

我認爲它是在最新的Spring 5中可用的,我已經寫了一個多部分的小演示,請點擊這裏:https://github.com/hantsy/spring-reactive-sample/tree/master/multipart,不要忘記在你的項目依賴關係中明確添加工件'nio-multipart-parser',此刻,Spring Boot 2.0.0.M3並未將其包含在webflux-starter中。 – Hantsy

+0

這周我會檢查一下。如果正確,我會更新答案以清楚地表明它。 –

相關問題