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

我正在尝试将文件上传到服务器,所以我尝试使用@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来解析整个多部分请求主体,但是您必须具有可以处理所有部分的非常特定的目标类型。

您会从的javadoc中注意到 @RequestBody

指示方法参数的注释应绑定到Web请求的正文。

目的是将整个请求主体绑定到method参数。如何将多部分请求的每个部分绑定到单个参数?有点像MultiValueMap<String,

Object>(这是什么FormHttpMessageConverter时候使用

multipart请求)。但这不是很有用,因为您必须检查每个值的类型。

作为开发人员,确切地指定您需要什么更为有意义。这就是为什么@RequestParam并且@RequestPart可用。

以上是 为什么我们不能从Java中的RequestBody获取文件数据? 的全部内容, 来源链接: utcz.com/qa/432492.html

回到顶部