Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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 mvc 为什么我们不能从java中的RequestBody获取文件数据?_Spring Mvc_File Upload - Fatal编程技术网

Spring mvc 为什么我们不能从java中的RequestBody获取文件数据?

Spring mvc 为什么我们不能从java中的RequestBody获取文件数据?,spring-mvc,file-upload,Spring Mvc,File Upload,我试图上传一个文件到服务器,所以我试图使用@RequestBody来获取文件的数据,但是我在上传文件时收到了415个错误代码 所以我在谷歌上搜索(找到了上传文件的解决方案),知道我无法从请求主体获取文件数据。所以我想知道为什么我们不能从请求体访问文件数据,因为数据将在HTTP请求的请求体中发送,所以我想知道在上传文件的情况下请求是如何发生的 之前的我的服务器代码: @RequestMapping(value = "/upload",headers = "Content-Type=multipar

我试图上传一个文件到服务器,所以我试图使用@RequestBody来获取文件的数据,但是我在上传文件时收到了415个错误代码

所以我在谷歌上搜索(找到了上传文件的解决方案),知道我无法从请求主体获取文件数据。所以我想知道为什么我们不能从请求体访问文件数据,因为数据将在HTTP请求的请求体中发送,所以我想知道在上传文件的情况下请求是如何发生的

之前的我的服务器代码:

@RequestMapping(value = "/upload",headers = "Content-Type=multipart/form-data", method = RequestMethod.POST)
@ResponseBody
public String upload(@RequestBody MultipartFile file)
{
}
解决方案:

@RequestMapping(value = "/upload",headers = "Content-Type=multipart/form-data", method = RequestMethod.POST)
@ResponseBody
public String upload(MultipartHttpServletRequest request)
{
}

因为这些文件不是请求主体,它们是请求主体的一部分,并且没有内置的HttpMessageConverter可以将请求转换为多部分文件数组。 这就是它工作的原因
@RequestParam(“文件”)MultipartFile[]files

而不是

@RequestBody MultipartFile file 

希望能有所帮助。

从技术上讲,您可以编写自己的程序来解析完整的多部分请求正文,但您必须有一个能够处理所有部分的非常特定的目标类型

您将从

指示方法参数的注释应绑定到主体 web请求的一部分

目的是将整个请求主体绑定到方法参数。如何将多部分请求的每个部分绑定到单个参数?类似于多值映射的东西。但这并不是很有用,因为您必须检查每个值的类型


作为一名开发人员,准确地指定您需要的内容更有意义。这就是为什么
@RequestParam
@RequestPart
可用的原因。

试试这个@RequestMapping(value=“/upload”,headers=“Content Type=multipart/form data”,method=RequestMethod.POST)@ResponseBody公共字符串上传(@RequestParam(“file”)MultipartFile uploadFile){}我知道它可以工作,我想知道为什么我们不能从@RequestBody获取它,我如何仅使用RequestBody参数获取文件及其内容?我以多部分的形式发送图像,同时发送所有图像的字符串Id,并希望通过Srping控制器获取它。