2015-06-09 113 views
3

我正在嘗試使用RequestParts上傳帶有附加參數的文件。我有文件正確上傳;然而,當我嘗試添加額外的參數時,我得到一個錯誤的迴應。Spring @RequestPart多部分/混合對象錯誤

我的控制器:

@RequestMapping(value = "/v1/cases/{caseId}/file", method = RequestMethod.POST, produces = "application/json; charset=utf-8") 
@ResponseStatus(HttpStatus.OK) 
@ResponseBody 
public Success uploadFile(
     @RequestPart(value="file") MultipartFile file, 
     @RequestPart(value="fileParameters") FileParameters fileParameters) throws FileNotFoundException, IOException { 

我試圖要在這個2點不同的方式與不同的錯誤:

1)

----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="file"; filename="myFile" 
Content-Type: 


----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="fileParameters" 

{"filePassword":"testPassword", "configuration":{}, "target":null} 
----WebKitFormBoundaryE19zNvXGzXaLvS5C 

這個錯誤有:

The server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method. See 'supportedMediaTypes' in 'additionalInfo' for a list of supported types 

2)

----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="file"; filename="myFile" 
Content-Type: 


----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="fileParamters[filePassword]" 

testPassword 
----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="fileParamters[configuration]" 

{} 
----WebKitFormBoundaryE19zNvXGzXaLvS5C 
Content-Disposition: form-data; name="fileParamters[target]" 

null 
----WebKitFormBoundaryE19zNvXGzXaLvS5C 

返回以下錯誤:

"rootExceptionClass": "org.springframework.web.multipart.support.MissingServletRequestPartException", 
"rootExceptionMessage": "Required request part 'keyParameters' is not present." 

我假定第一種方法是正確的;然而,該應用程序確實支持JSON,所以我不確定我缺少配置的明智之處。有什麼我不得不添加到請求,以正確工作,或者我在消息轉換器中丟失的東西。

注意:不確定這個問題,但我使用Postman來測試端點。

+0

嗨,你看着辦吧?我一直被困在同樣的問題。我看過很多解決方案,但似乎沒有任何工作。 – mushfek0001

+0

不幸的是,我從來沒有。我只是在請求參數中將請求主體作爲json字符串傳遞並使用jackson將其轉換爲我需要的對象。遠非理想。 – user856354

+0

老問題,我不確定是否是問題,但仍然會發表評論。你的「fileParameters」被張貼爲表單數據。也許嘗試張貼爲應用程序/ JSON – TrueCoke

回答

0

添加

Content-Type: application/json;

Content-Disposition: form-data; name="fileParameters"

以明確的線下如何解決您的參數

看到Spring是文檔here