转自:http://1zebra.iteye.com/blog/427260
在struts1.x中,若使用FormFile[]数组来做批量上传并不能成功。
下面这种方法只是通过struts1.x中的MultipartRequestHandler来获取<input type="file" />控件来达到批量上传的目的
1.jsp页面为
<html:file property="files(0)" />
<html:errors property="files" />
<div id="uploadFile"></div>
<a href=""> <input type="button" value="上传更多"
onclick="addItem()" />
<script>
i=1;
function addItem(){
document.getElementById('uploadFile').innerHTML+='<input type=\"file\" name=\"files('+i+')\"><br/> ';
i++;
}
</script>
2 form表单
//目的是不让struts报错
private List<FormFile> files = new ArrayList<FormFile>();
public List<FormFile> getFiles() {
return this.files;
}
3.action为
//获取formfile
ContentPublishForm contentPublishForm = (ContentPublishForm) form;
MultipartRequestHandler multipartRequestHandler = form
.getMultipartRequestHandler();
// 取得所有上传文件的对象集合
Hashtable elements = multipartRequestHandler.getFileElements();
// 循环遍历每一个文件
Collection values = elements.values();
int k = 0;
for (java.util.Iterator i = values.iterator(); i.hasNext();) {
FormFile file = (org.apache.struts.upload.FormFile) i.next();// 取得上传的文件
if ("" != file.toString()) {
FileOutputStream fileOutput;
try {
String fileUrl = request
.getRealPath("//Image//"
+ file.getFileName());
fileOutput = new FileOutputStream(fileUrl);
fileOutput.write(file.getFileData());
fileOutput.flush();
fileOutput.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
总的来说,"struts实现任意多文件上传实例"是一个实用的示例,可以帮助开发者了解和掌握在Struts中进行多文件上传的完整流程。通过学习这个实例,你可以更深入地理解Struts框架和文件上传的处理方式。
在表单中,可以使用HTML5的`multiple`属性允许用户选择多个文件。在Action中,循环遍历这些文件并进行相应的处理。 提供的压缩文件`struts实现上传下载源码及文档`应该包含了完整的实现示例,包括Action类、...
本篇将详细介绍如何在 Struts2 中实现单个文件和多个文件的上传功能。 首先,为了实现文件上传,我们需要在项目中添加两个关键的库:`commons-fileupload-1.1.1.jar` 和 `commons-io-1.1.jar`。这两个库提供了文件...
然后,我们可以在Action类中定义一个`List<FileInfo>`类型的成员变量,用来接收上传的多个文件。 当涉及到文件类型和大小的验证时,Struts2提供了`interceptor`拦截器来实现。例如,我们可以自定义一个`...
在Struts2中实现多文件上传是一项常见的功能,尤其在处理用户需要一次性提交多个文件的场景下。本篇文章将详细探讨如何在Struts2中实现多文件上传,并介绍相关的知识点。 首先,我们需要了解Struts2的文件上传机制...
能同时上传单个文件或多个文件并创建文件夹,可以任意增减文件数目,运行结果
5. **文件队列管理**:SwfUpload 支持文件队列,用户可以选择多个文件后一次性上传,也可以按需控制文件的上传顺序和取消上传。 **Java 后端处理** 在Java后端,我们需要处理SwfUpload发送的HTTP请求。由于...
2. **批量上传**: 批量上传意味着用户可以一次选择并上传多个文件。这可以通过在表单中使用多个`<input type="file">`元素来实现,每个元素对应一个待上传的文件。在Action类中,需要对应数量的File字段来接收这些...
第一个Struts2程序,处理一个form多个submit,struts.xml常用配置解析,使用validate方法验证数据,使用Validation框架验证数据,在Action类中获得HttpServletResponse对象的四种方法,上传任意多个文件,拦截器概述...
总的来说,"strut2文件上传实例"是一个关于如何在Struts2框架下实现文件上传功能的示例,涵盖了配置、表单创建、Action处理、文件保存以及安全性考虑等多个方面。通过这个实例,开发者可以学习到如何在实际项目中...
然而,随着时间的推移,Struts2框架被发现存在多个安全漏洞,这些漏洞可能导致严重的后果,如远程代码执行、数据泄露等。"K8_Struts2_EXP 20170310"是针对这些问题的一款检测工具,主要用于识别和预防Struts2框架的...
升级到这些版本对于所有使用受影响Struts版本的用户来说至关重要,尤其是那些使用基于Jakarta的多分片文件上传解析器的用户。升级可以防止恶意攻击者利用此漏洞对系统进行攻击。 **应对策略** 1. **立即升级**: ...
5. **文件上传测试**:除了命令执行,某些Struts2漏洞也可能允许恶意文件上传,该工具可能包含对这一风险的检测。 6. **教育与预防**:通过使用此工具,管理员不仅可以了解当前系统的安全状况,还能学习如何防止...
1. 获取所需的jar文件,可以从Apache Struts官方网站下载Struts2的完整包,其中包括核心库、XWork库、OGNL库、FreeMarker库、日志库以及文件上传组件等。 2. 创建Struts2的配置文件,通常是`struts.xml`,该文件需要...
**9.2 上传任意多个文件** 通过在表单中设置`name`属性相同的多个文件上传控件,可以实现多个文件的上传。 **示例代码**: ```java public String execute() { List<File> files = getFiles("file"); List...
3. **S2-048**(CVE-2017-5638):这个漏洞是由于解析JSON时的反序列化问题,使得攻击者可以通过上传恶意的JSON文件来执行任意代码。 4. **S2-012**(CVE-2012-6120):该漏洞存在于Struts2的FreeMarker模板引擎中...
例如,`*`可以匹配任意字符,`**`可以匹配多个目录层级。这种特性有助于创建更简洁、可读性强的URL结构。 3. **Struts2应用POJO(Plain Old Java Object)详解**:在Struts2中,动作类可以是普通的Java对象,无需...
这个漏洞影响了Struts2的多个版本,包括2.3.x和2.5.x。 2. **S2-046(CVE-2017-5638)**:又称为“Apache Struts2远程代码执行漏洞”,是由于上传插件中的一个严重错误,使得攻击者可以利用恶意的Multipart请求来...