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來測試端點。
嗨,你看着辦吧?我一直被困在同樣的問題。我看過很多解決方案,但似乎沒有任何工作。 – mushfek0001
不幸的是,我從來沒有。我只是在請求參數中將請求主體作爲json字符串傳遞並使用jackson將其轉換爲我需要的對象。遠非理想。 – user856354
老問題,我不確定是否是問題,但仍然會發表評論。你的「fileParameters」被張貼爲表單數據。也許嘗試張貼爲應用程序/ JSON – TrueCoke