springmvc读取表单数据为二进制流

问题: spring webmvc流读取Content-Type:application/x-www-form-urlencoded提交的数据为空
1) springwebmvc版本:5.3.26,之前没有关注这个问题。5.2.10可以正常读取
2) 后端读取request.getInputStream获取为空 #初步判断被提前读取到了request.getParameterMap()中。如何统一设置用流读取

这篇文章错误跟你很相似,可以参考下这篇文章:https://blog.csdn.net/m0_52861211/article/details/131872923

【以下回答由 GPT 生成】

Spring MVC提供了多种方式来处理表单数据,其中包括以二进制流的形式读取表单数据。以下是在Spring MVC中以二进制流形式读取表单数据的解决方案:

  1. 确保在pom.xml文件中引入正确的Spring Web MVC版本。根据问题描述,你正在使用5.3.26版本,因此需要确保项目的依赖中包含以下依赖项:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.3.26</version>
</dependency>
  1. 在你的Controller中添加以下请求处理方法(方法名和参数可以根据你的需求自行命名和调整):
@PostMapping(value = "/upload", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@ResponseBody
public String uploadBinaryData(HttpServletRequest request) {
    try (InputStream inputStream = request.getInputStream()) {
        // 在这里处理你的二进制数据流
        // 例如,可以使用inputStream进行数据解析、存储等操作
        // ...
        return "上传成功";
    } catch (IOException e) {
        // 处理异常情况
        return "上传失败";
    }
}

在上述代码中,@PostMapping注解指定了请求方法为POST,consumes属性指定了请求的Content-Type为application/x-www-form-urlencoded@ResponseBody注解表示返回值会直接作为响应体返回给客户端。

  1. 通过调用request.getInputStream()方法获取到请求中的二进制数据流,然后在该方法中进行相应的处理。

在客户端发送表单数据时,确保使用application/x-www-form-urlencoded作为请求的Content-Type。这可以通过设置请求头或通过使用Content-Type请求参数实现。

如果你的Spring MVC版本低于5.3.26,并且无法直接通过上述方式读取二进制流表单数据,那么可能需要考虑升级到最新版本的Spring MVC或者尝试其他方式处理表单数据。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^