gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:48:59 24 4
gpt4 key购买 nike

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

您会从 @RequestBody 的 javadoc 中注意到

Annotation indicating a method parameter should be bound to the body of the web request.



目的是将整个请求正文绑定(bind)到方法参数。如何将多部分请求的每个部分绑定(bind)到单个参数?类似于 MultiValueMap<String, Object> ( which is what FormHttpMessageConverter uses when writing a multipart request)。但这不会很有用,因为您必须检查每个值的类型。

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

关于spring-mvc - 为什么我们不能从 java 中的 RequestBody 获取文件数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33041826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com