为此,客户端和服务器端都需要进行一些更改:
- 客户端 :使用多个 <s:file> 标签,允许用户根据需要选择尽可能多的文件。
- 服务器端 :在动作类中,将成员变量的类型从单个对象修改为数组或列表,如下所示:
- 文件 X 到 String[] X 或 List<File> X
- String XFileName 到 String[] XFileName 或 List<String> XFileName
- 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 极客 <<<<<