Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
spring boot rest控制器中不接受多部分表单数据_Spring_Spring Boot_Http - Fatal编程技术网

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) {

我想将多部分表单数据发送到我的spring boot rest控制器

下面是我的请求处理程序代码

@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,如果他发送的是多部分文件内容,则该类型应如此,以便正确地获得文件?我已修改了我的答案,以明确我的观点。谢谢你指出这一点。