spring boot rest控制器中不接受多部分表单数据
我想将多部分表单数据发送到我的spring boot rest控制器 下面是我的请求处理程序代码spring boot rest控制器中不接受多部分表单数据,spring,spring-boot,http,Spring,Spring Boot,Http,我想将多部分表单数据发送到我的spring boot rest控制器 下面是我的请求处理程序代码 @PostMapping(value = "/postmultipartformdata" , consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public String postFormData(@RequestBody MultiValueMap<String, String> formData) {
@PostMapping(value = "/postmultipartformdata" , consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String postFormData(@RequestBody MultiValueMap<String, String> formData) {
return "Welcome to the post method with multi part form data. Printing whatever is present in the body " + formData;
}
可能我遗漏了一些非常简单的东西
致以最良好的祝愿
Saurav您需要使用
@RequestParam
而不是@RequestBody
,而且如果您发送的内容实际上是一个文件,请将其映射到多部分文件
对象,在您的情况下,可能不需要这些数据,但由于您的问题不清楚您发送的数据类型,我在这里包括以下内容:
@PostMapping(value = "/postmultipartformdata" , consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String postFormData(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
yourService.store(file);
redirectAttributes.addFlashAttribute("message",
"You successfully uploaded " + file.getOriginalFilename() + "!");
return "redirect:/";
}
通常,我们使用MultipartFile表示在multipart请求中收到的上载文件。您需要使用
@RequestParam
而不是@RequestBody
,并且如果您发送的内容实际上是一个文件,请将其映射到MultipartFile
对象,在您的情况下,可能不需要这些数据,但由于您的问题不清楚您发送的数据类型,我在这里包括以下内容:
@PostMapping(value = "/postmultipartformdata" , consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public String postFormData(@RequestParam("file") MultipartFile file,
RedirectAttributes redirectAttributes) {
yourService.store(file);
redirectAttributes.addFlashAttribute("message",
"You successfully uploaded " + file.getOriginalFilename() + "!");
return "redirect:/";
}
通常,我们使用MultipartFile表示在多部分请求中收到的上传文件。您必须使用
@RequestParam
而不是@RequestBody
。
因为表单数据是用请求参数处理的,而不是用请求体处理的
下面是我如何纠正它的:
@PostMapping(value=“/postmultipartformdata”,consumes=MediaType.MULTIPART\u FORM\u DATA\u value)
公共字符串postFormData(@RequestParam MultiValueMap formData){
返回“欢迎使用包含多部分表单数据的post方法。打印正文中的任何内容”+表单数据;
}
命令
curl--位置--请求发布'http://localhost:8080/status/postmultipartformdata' \
--表格‘a=a’\
--表格‘b=b’\
--表格'c=c'
输出:
Welcome to the post method with multi part form data.
Printing whatever is present in the body {a=[a], b=[b], c=[c]}
参考:
您必须使用
@RequestParam
而不是@RequestBody
。
因为表单数据是用请求参数处理的,而不是用请求体处理的
下面是我如何纠正它的:
@PostMapping(value=“/postmultipartformdata”,consumes=MediaType.MULTIPART\u FORM\u DATA\u value)
公共字符串postFormData(@RequestParam MultiValueMap formData){
返回“欢迎使用包含多部分表单数据的post方法。打印正文中的任何内容”+表单数据;
}
命令
curl--位置--请求发布'http://localhost:8080/status/postmultipartformdata' \
--表格‘a=a’\
--表格‘b=b’\
--表格'c=c'
输出:
Welcome to the post method with multi part form data.
Printing whatever is present in the body {a=[a], b=[b], c=[c]}
参考:
您也可以使用
@RequestPart
而不是@RequestBody
在多部分请求中获取所需的部分
就像:
@RequestPart LinkedMultiValueMap<String, String> formData
@RequestPart-LinkedMultiValueMap-formData
我还切换到了具体的类LinkedMultiValueMap
,因为Spring很难实例化MultiValueMap
然后使用
内容类型发送formData
部分:application/json
您也可以使用@RequestPart
而不是@RequestBody
来获取多部分请求中所需的部分
就像:
@RequestPart LinkedMultiValueMap<String, String> formData
@RequestPart-LinkedMultiValueMap-formData
我还切换到了具体的类LinkedMultiValueMap
,因为Spring很难实例化MultiValueMap
然后用
内容类型发送formData
部分:application/json
您是否检查了这与所问问题的联系?他得到了415个不受支持的媒体类型,因为他使用的是@RequestBody而不是RequestParam,如果他发送的是多部分文件内容,那么类型应该是这样的为了使文件正确无误,我已经修改了我的答案,以明确我的观点。感谢您指出。这与所问的问题有何联系?他得到的是415种不受支持的媒体类型,因为他使用的是@RequestBody而不是RequestParam,如果他发送的是多部分文件内容,则该类型应如此,以便正确地获得文件?我已修改了我的答案,以明确我的观点。谢谢你指出这一点。