为什么我们不能从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