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