`
ducklsl
  • 浏览: 24793 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

JavaScript+Struts2实现可选择性多文件上传

阅读更多
页面代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>My JSP 'index.jsp' starting page</title>
		<SCRIPT type="text/javascript">
		function addMore(){
			var td = document.getElementById("more");
			var br = document.createElement("br");//创建一个换行标签
			//创建一个类型为type的input标签
			var input = document.createElement("input");
			input.type="file";//设置input类型为file
			input.name="upload"//设置input的名称为upload
			//创建一个类型为button的input标签	
			var button = document.createElement("input");
			button.type="button"; //设置input类型为button
			button.value="Remove"; //设置input显示为Remove
			//设置按钮事件
			button.onclick=function(){
				td.removeChild(br);
				td.removeChild(input);
				td.removeChild(button);
			}
			td.appendChild(br);
			td.appendChild(input);
			td.appendChild(button);		
		}
		</SCRIPT>
	</head>
	<body>
		<form action="uploadfile4" method="post" enctype="multipart/form-data">
			<table border="1px">
				<tr>
					<td>
						file
					</td>
					<td id="more">
						<input type="file" name="upload" />
						<input type="button" value="Add More..." onclick="addMore()"/>
					</td>
				</tr>
				<tr align="right">
					<td colspan="2">
						<input type="submit" value="上传"/>
					</td>
				</tr>
			</table>
		</form>
	</body>
</html>
当多文件上传时,在Struts2的Action类中可以使用数组也可以使用List<E>泛型的方式来获取上传的多文件,获取数组后,处理方式就和单个文件上传的方式一样
Action处理代码:
private File[] upload; // 上传的文件,与页面的<input type="file"
							// name="upload"/>中的name属性一致
	private String[] uploadFileName;// 文件名,Struts规定个格式 [name]FileName
	private String[] uploadContentType;// 文件类型,Struts规定的格式[name]ContentType
	@SuppressWarnings("deprecation")
	public String execute() {
		try {
			for (int i = 0; i < upload.length; i++) {
				InputStream is = new FileInputStream(upload[i]);// 创建输入流,读取上传文件
				// String parentDir =
				// ServletActionContext.getServletContext().getRealPath(parentDir);
				String parentDir = ServletActionContext.getRequest()
						.getRealPath("/upload");// 指定文件上传目录
				File destFile = new File(parentDir, this.getUploadFileName()[i]);
				if (!destFile.getParentFile().exists()) {// 判断存放文件的目录是否存在
					destFile.getParentFile().mkdir();// 不存在则创建
				}
				OutputStream os = new FileOutputStream(destFile);// 创建输出流,将内容写入文件
				byte[] buffer = new byte[1024];
				int length = 0;
				while ((length = is.read(buffer)) > 0) {// 读文件
					os.write(buffer, 0, length);// 写文件
				}
				is.close();// 关闭inputStream
				os.close();// 关闭outputStream
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "success";
	}

也可以使用泛型的方式进行接收,并且处理:
private List<File> upload;  //上传的文件,与页面的<input type="file" name="upload"/>中的name属性一致
	private List<String> uploadFileName;//文件名,Struts规定个格式 [name]FileName
	private List<String> uploadContentType;//文件类型,Struts规定的格式[name]ContentType
	@SuppressWarnings("deprecation")
	public String execute() {
		try {
			for(int i=0;i<upload.size();i++){
				InputStream is = new FileInputStream(upload.get(i));//创建输入流,读取上传文件
				//String parentDir = ServletActionContext.getServletContext().getRealPath(parentDir);
				String parentDir = ServletActionContext.getRequest().getRealPath(
						"/upload");//指定文件上传目录
				File destFile = new File(parentDir, this.getUploadFileName().get(i));
				if (!destFile.getParentFile().exists()) {//判断存放文件的目录是否存在
					destFile.getParentFile().mkdir();//不存在则创建
				}
				OutputStream os = new FileOutputStream(destFile);//创建输出流,将内容写入文件
				byte[] buffer = new byte[1024];
				int length = 0;
				while ((length = is.read(buffer)) > 0) {// 读文件
					os.write(buffer, 0, length);// 写文件
				}
				is.close();//关闭inputStream
				os.close();//关闭outputStream
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "success";
	}
只是对多个文件进行遍历,而处理的方式和单个文件是一致的
分享到:
评论

相关推荐

    ajaxFileUpload+struts2实现多文件上传(源码)

    在本文中,我们将深入探讨如何使用`ajaxFileUpload`与`Struts2`框架结合,实现多文件上传功能。这个示例源码提供了一个实用的方法,使得用户可以在不刷新整个页面的情况下,上传多个文件,提高了用户体验。 首先,`...

    java+struts+swfupload文件上传下载

    1. **集成SwfUpload**:在前端页面引入SwfUpload的JavaScript库,配置相关参数如上传URL、文件类型限制等,实现文件选择和上传触发事件。 2. **创建Struts Action**:在Struts框架中创建一个Action类,用于接收...

    ztree+struts2+hibernate项目

    【标题】"ztree+struts2+hibernate项目"是一个综合性的Web应用程序示例,它结合了多个核心技术,包括ztree、Struts2、Hibernate以及jQuery,展现了如何在实际开发中有效地整合这些工具。这个项目的核心在于利用ztree...

    struts2+jquery多文件上传显示进度条,可直接运行(非常强大)

    Struts2和jQuery结合实现的多文件上传功能是一种常见的Web开发技术,特别是在处理大量数据时,用户需要上传多个文件的情况。这个项目的核心是利用Struts2的Action支持和jQuery的AJAX功能,以及一个用于展示进度条的...

    Struts+swfupload实现文件上传功能

    在本文中,我们将深入探讨这两个组件以及如何将它们整合以实现文件上传。 首先,Struts是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了一种组织和管理Web应用的方式,使得开发者可以更...

    struts2 +jquey uploadify3.2 实现多文件上传,可预览、删除、排序

    2. **多文件上传**:Uploadify支持选择多个文件进行上传,用户可以通过拖拽或选择文件对话框一次性选择多个文件。 3. **预览功能**:在文件上传前,用户可以预览选定的文件,如图片、文档等,增加用户体验。 4. **...

    struts2+swfupload实现大文件多文件上传

    Struts2和SwfUpload是两个在Web开发中用于处理用户交互的重要工具,它们结合使用可以实现高效的大文件和多文件上传功能。Struts2是一个基于MVC(Model-View-Controller)架构的Java框架,它提供了强大的控制层支持,...

    struts2+ajax实现批量上传文件(简单实现,自己加工)

    当用户按Ctrl键选择多个文件时,可以在JavaScript中实现遍历和合并这些文件信息,然后一次性发送到后台。 为了实现这个功能,你需要在客户端(HTML页面)设置一个文件输入框,并添加事件监听器。使用JavaScript或...

    struts2+easyui+uploadfye文件上传

    在实际开发中,为了实现文件上传,通常需要考虑以下几个方面: 1. **文件大小限制**:为了防止恶意用户上传大文件占用服务器资源,需要设置上传文件的最大大小。 2. **文件类型检查**:限制可上传的文件类型,只允许...

    JFreeChart+Struts2实践例子

    JFreeChart是一个用于创建高质量图表的开源库,而Struts2则是一个流行的MVC框架,用于构建可维护性和可扩展性强的Web应用程序。这篇内容将深入探讨如何在Struts2框架下集成并使用JFreeChart,展示五种不同的图像实践...

    基于Struts+hibernate+spring+Html5+Mysql支持多文件上传实例

    本实例是一个基于Struts2、Hibernate、Spring和HTML5技术的综合应用,利用MySQL数据库存储文件信息,为用户提供了一个高效且用户友好的多文件上传解决方案。下面将详细阐述这个实例中的各个关键知识点。 首先,**...

    struts2实现多文件异步上传

    在Struts2中实现多文件异步上传是一个常见的需求,它能够提高用户体验,因为用户可以在不等待所有文件上传完成的情况下继续浏览其他页面。下面将详细解释如何在Struts2中实现这一功能。 首先,我们需要理解异步上传...

    struts2 批量上传 图片+文件

    在这个场景中,我们讨论的是如何在Struts2中实现图片和文件的批量上传,并且在上传过程中显示进度条。 批量上传是指用户可以一次性选择多个文件进行上传,而不仅仅是一个文件。这通常需要前端界面支持多选文件的...

    spring+struts2+hibernate+json+dtree+mysql实现的无限级联树

    2. **Struts2框架**:Struts2是一个基于MVC设计模式的Java Web应用框架,用于简化开发并提供可扩展性。它处理HTTP请求,将用户界面与业务逻辑分离开来。在这个项目中,Struts2可能是用于接收前端请求,调用后端服务...

    struts2+pell文件上传

    Pell是一个简单的、无JavaScript的文件上传组件,它通常被集成到Struts2框架中以实现用户友好的文件上传功能。在Struts2中集成Pell,可以为用户提供一个直观的界面来选择和上传文件,而无需复杂的前端技术。 首先,...

    空白spring+hibernate+struts2项目

    7. **优点**:Spring+Hibernate+Struts2组合提供了一种成熟的解决方案,可以有效地分离关注点,提高代码的可测试性和可维护性。此外,这三个框架都有丰富的社区支持,有大量的教程和插件可用。 8. **学习路径**:...

    json+struts2+spring体育课选课系统

    Struts2的拦截器机制使得系统能进行权限控制、日志记录等操作,提高系统的可维护性和安全性。 三、Spring框架的整合 Spring作为Java企业级应用的核心框架,提供依赖注入(DI)和面向切面编程(AOP)等功能。在本系统中...

    struts2多文件上传显示进度

    Struts2是一个非常流行的Java Web框架,...总的来说,Struts2多文件上传并显示进度的实现需要结合前端和后端的技术,通过AJAX和XMLHttpRequest的`onprogress`事件来动态更新进度条,同时确保后端处理的高效和安全性。

    struts2+uploadify(2.1.4)的文件上传

    Uploadify是一款基于JavaScript和Flash的前端文件上传插件,允许用户实现多文件选择、进度条显示、预览等功能,使得文件上传更加友好和高效。 在Struts2中集成Uploadify,我们需要理解以下几个关键知识点: 1. **...

    青鸟租房网 使用MyBatis+Struts框架

    在Java Web开发领域,MyBatis和Struts2是两个非常重要的开源框架,它们分别承担着数据访问和控制层的角色,为开发高效、可维护的Web应用提供了便利。本文将详细介绍这两个框架以及在"青鸟租房网"项目中的应用。 ...

Global site tag (gtag.js) - Google Analytics