spring boot集成struts2上传文件的问题

问题背景:

老项目升级用spring boot,直接弃用struts2的话需要花费不少时间,所以暂时继续用struts2。

问题描述:

接口接收不到文件类型参数(包括File、MultipartFile)

问题处理过程:

首先我仔细检查入参,参数名没问题,与action中参数一致,有get/set方法,Content-Type也是multipart/form-data。检查完入参后发现并无问题,接口请求后file仍然时null,这时去网上找看是否有相关的案例,然而并没有找到想要的结果(毕竟struts2已经很老了)。没有办法最后只能自己打断点摸索着看

可以看出,parameter中有其他参数,并没有file文件,但是点开parts后发现里面的数据很想上传的文件

到这里就知道文件在哪了,下面直接取文件就ok

HttpServletRequest request = ServletActionContext.getRequest();
Part part = request.getPart("file");// 获取上传的文件部分
String fileName = part.getSubmittedFileName();// 获取上传文件的文件名
InputStream inputStream = part.getInputStream();

下面时关于Part的相关解释:

在 Java Servlet 中,Part 是 Servlet 3.0 新增的接口,用于表示 HTTP 请求中的一个部分(part),通常是指上传的文件。通过 Part 接口,你可以方便地获取上传文件的相关信息和内容。

在 HttpServletRequest 对象中,通过 getPart(String name) 方法可以获取到指定名称的 Part 对象。一般情况下,上传文件的表单域名称会被指定为 "file" 或类似的名称。

下面是 Part 接口的一些常用方法:

  1. String getName():获取 Part 的名称。
  2. String getSubmittedFileName():获取上传文件的文件名。
  3. long getSize():获取上传文件的大小。
  4. String getContentType():获取上传文件的 MIME 类型。
  5. InputStream getInputStream():获取上传文件内容的输入流,可以通过该输入流读取文件内容。

通过使用 Part 接口,你可以轻松地处理上传文件,并获取文件的各种属性和内容。在处理文件上传的 Servlet 中,通常会使用 Part 接口来获取上传的文件内容。

问题总结:

对于文件请求为什么不能直接映射到参数上,我也不太清楚,反正问题时解决了,希望知道这个问题的根本原因的大佬可以指点指点。

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
spring boot集成beetl极简入门实例 项目描述 springboot集成beetl极简入门实例 Beetl 是新一代 Java 模板引擎典范。相对于其他 java 模板引擎,具有功能齐全,语法直观,性能超高,开发和维护模板有很好的体验。是新一代的模板引擎。总得来说,它的特性如下: 1、功能完备:同主流的 java 模板引擎相比,Beetl 具有绝大多数功能。适用于各种应用场景,从对响应速度有很高要求的大网站到功能繁多的 CMS 管理系统都适合。Beetl 本身还具有很多独特功能来完成模板编写和维护,这是其他模板引擎所不具有的。 2、非常简单:类似 Javascript 语法和习俗,只要半小时就能通过半学半猜完全掌握用法。拒绝其他模板引擎那种非人性化的语法和习俗。 3、超高的性能:Beetl 远超过主流 java 模板引擎性能,如 5-6 倍于 freemarker,2 倍于传统 jsp 技术。而且消耗较低的 CPU 4、易于整合:Beetl 能很容易的与各种 web 框架整合,如 Spring MVC,JFinal,Struts,Nutz,Jodd,Servlet 等。 5、支持模板单独开发和测试,即在 MVC 架构中,即使没有 M 和 C 部分,也能开发和测试模板。 6、扩展和个性化:Beetl 支持自定义方法,格式化函数,虚拟属性,标签,和 HTML 标签。同时 Beetl 也支持自定义占位符和控制语句起始符号也支持使用者完全可以打造适合自己的工具包. 7、核心实现是脚本语言,可以作为规则引擎,表达式计算,脚本语言使用 运行环境 jdk8+tomcat9+IntelliJ IDEA+maven 项目技术(必填) springboot+html+beetl 数据库文件(可选) 无 依赖包文件(可选) 项目采用maven管理jar包版本依赖,编译项目自动下载相关版本jar包 链接:https://pan.baidu.com/s/1Eh_xP6DN3beLHZ81L3kBSg?pwd=j3ka 提取码:j3ka

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值