为什么我们不能从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)
{
}
Sotirios Delimanolis

从技术上讲,您可以编写自己的代码HttpMessageConverter来解析整个多部分请求主体,但是您必须具有可以处理所有部分的非常特定的目标类型。

您会从的javadoc中注意到 @RequestBody

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

目的是将整个请求主体绑定到method参数。如何将多部分请求的每个部分绑定到单个参数?有点像MultiValueMap<String, Object>这是什么FormHttpMessageConverter时候使用multipart请求)。但这不是很有用,因为您必须检查每个值的类型。

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我们不能从逆变型再现

为什么我们不能从sql调用过程

为什么我不能从我的Json文件中检索数据?

为什么我不能从这个结构中获取文章数据?

为什么我不能从提取中存储数据

为什么我们不能超载在功能界面中的抽象方法?(JAVA)

为什么我们不能在Java 8流中抛出异常?

为什么我们不能在Java 7+中打开类?

为什么我们不能在Java的普通方法中调用this()方法?

为什么我们不能从O(n)中的未排序数组构造二叉搜索树?

为什么我们不能从工作线程更新UI?与其他变量/对象相同

为什么在Java中我们不能通过一个扫描器对象获取用户输入的int和string?

为什么我们从Java 1.6中的FileChannel.map获取ClosedByInterruptException?

为什么我们到底需要Java中的StringBuffer

为什么我们需要Java中的默认方法?

为什么我们需要纯<?>在Java中?

为什么我们需要Java中的Properties类?

为什么我们需要Java中的弱引用

为什么我不能从 sqlite 数据库中检索到我期望的数据?

为什么我不能从我的 scss 文件中调用我的 id 变量?

为什么我们不能在Java中实例化一个抽象类?

为什么我们不能删除正在运行的可执行文件

为什么我们不能使用aiohttp为生产提供静态文件?

为什么编译后我们不能理解二进制文件的内容?

为什么我不能从我的 sqlite3 数据库中删除?

为什么我的文件阅读器不能从 xmlhttprequest 读取这个数据 url

为什么我不能从集合中获取项目并将其存储在变量中?

为什么我不能从 VBA 中的多实例表单中获取当前记录 ID

为什么我不能从NgForm获取表单控件