Lab*_*beo 7 file-upload spring-mvc
我正在尝试将文件上传到服务器,所以我试图使用@RequestBody获取文件的数据,但我在尝试上传文件时收到415错误代码.
所以我用Google搜索(获得上传文件的解决方案)并且知道我无法从请求正文中获取文件数据.所以我想知道为什么我们无法从请求体访问文件数据,因为数据将在HTTP请求中的请求体中发送,所以我想知道在上传文件的情况下请求是如何发生的.
我之前的服务器代码:
@RequestMapping(value = "/upload",headers = "Content-Type=multipart/form-data", method = RequestMethod.POST)
@ResponseBody
public String upload(@RequestBody MultipartFile file)
{
}
Run Code Online (Sandbox Code Playgroud)
解:
@RequestMapping(value = "/upload",headers = "Content-Type=multipart/form-data", method = RequestMethod.POST)
@ResponseBody
public String upload(MultipartHttpServletRequest request)
{
}
Run Code Online (Sandbox Code Playgroud)
从技术上讲,你可以编写自己的HttpMessageConverter
解析完整的多部分请求体,但你必须有一个非常具体的目标类型,可以处理所有的部分.
你会注意到javadoc的 @RequestBody
指示方法参数的注释应绑定到Web请求的主体.
意图是将整个请求体绑定到方法参数.如何将多部分请求的每个部分绑定到单个参数?有点像MultiValueMap<String, Object>
(这是什么FormHttpMessageConverter
时候使用写 multipart请求).但这不是很有用,因为你必须检查每个值的类型.
作为开发人员,确切地指定您需要的内容会更有意义.这就是原因@RequestParam
并且@RequestPart
可用.
因为这些文件不是请求体,所以它们是它的一部分,并且没有内置的HttpMessageConverter可以将请求转换为MultiPartFile数组.这就是它的工作原理@RequestParam("file") MultipartFile[] files
代替
@RequestBody MultipartFile file
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.
归档时间: |
|
查看次数: |
7071 次 |
最近记录: |