Struts2 多文件上传

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

为此,客户端和服务器端都需要进行一些更改:


  • 客户端 :使用多个 <s:file> 标签,允许用户根据需要选择尽可能多的文件。
  • 服务器端 :在动作类中,将成员变量的类型从单个对象修改为数组或列表,如下所示:
  1. 文件 X String[] X List<File> X
  2. String XFileName String[] XFileName List<String> XFileName
  3. String XContentType String[] XContentType List<String> XContentType



其中 X 是上传表单中 <s:file> 标签的名称,例如:


 <s:file name="fileUpload" />

那么 X 将是“fileUpload”。因此在动作类中:


 <s:file name="fileUpload" />

或者:


 <s:file name="fileUpload" />

并记住为这些变量正确创建 getter 和 setter。

1.关于上传多个文件的例子

下面的示例程序演示了如何使用 Struts 2 框架实现上传多个文件的功能。该应用程序显示一个上传表单,允许用户一次选择三个文件上传。

上传的文件被复制到在应用程序的 struts.xml 文件中配置的位置。

让我们看看示例应用程序是如何编码的。

2. 编写上传表单代码

上传表单在upload.jsp页面实现如下:

运行时,页面如下所示:


 <s:file name="fileUpload" />


提交此表单时,将调用 uploadFile 操作。

3.编写action类的代码

在MultipleFilesUploadAction.java文件中实现Struts 2的action类如下:


 <s:file name="fileUpload" />

在这个 POJO 动作类中,我们使用三个数组来存储上传的文件:


 <s:file name="fileUpload" />


  • 请注意,“fileUpload”一词与 upload.jsp 文件中 <s:file> 标记的名称属性值相匹配。 Struts 2 的拦截器fileUpload 将通过setter 获取这些变量的数据。
  • 变量 saveDirectory 的值由 Struts 2 的 staticParams 拦截器通过相应的 setter 设置,这个值可以在 struts.xml 文件中配置。
  • 动作类的入口方法 doUpload() 将上传的文件从临时目录复制到 saveDirectory 变量指定的位置,然后重定向到“成功”视图,即结果页面。

了解更多 >>>>> Java 极客 <<<<<

相关文章