当前位置: 首页 > 工具软件 > AlanXUpload > 使用案例 >

AlanXUpload 实现文件的批量上传

郑功
2023-12-01

AlanXUpload是一个通过flash技术提供批量上传文件的web批量上传组件,用户可以自定义上传的文件类型、大小、数量,上传的地址,上传的处理方式,自定义上传UI,接受服务器发送的反馈信息,并显示所有文件及单个文件的上传进度。


AlanXUpload 采用的是最宽松的MIT许可证

主要功能:

· 可一次性选择200到1000个文件批量上传 

· 可在选择前指定文件格式(如:”.xls;.doc”)和大小 

· 单个文件大小允许最到到100M,多个文件大小可达1G 

· 可实时显示当前在批量上传的文件总大小和总数及进度条 

· 可实时显示单个文件的总大小和以上传大小及进度


使用说明

首先,请保证你的工程中有common-fileupload-1.x.x.jar和common-io-1.x.x.jar(可到apache.org下载,但这不是必须的,将来我会会在文档中说明,什么情况下,不需要依赖其他的jar包)

1. 其中AlanX1.0.jar中包含了java源代码,请把它copy到你的工程的WEB-INF > lib文件夹中

2. 将AlanX放入你现在工程的web目录的根目录下,与WEB-INF同级

放在根目录下,与WEB-INF同级

3.在web.xml加入如下代码:

<servlet>

<description>AlanX.cn Batch Upload Sample</description>

<display-name>AlanXUploadServlet</display-name>

<servlet-name>AlanXUploadServlet</servlet-name>

<servlet-class>cn.alanx.upload.sample.AlanXUploadServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>AlanXUploadServlet</servlet-name>

<url-pattern>/AlanXUploadServlet</url-pattern>

</servlet-mapping>


4.将 AlanXUpload.tld 文件放在WEB-INF目录或其子目录中

5.在需要上传的jsp页面加入如下红色代码:

<%@ taglib prefix=”ax” uri=”/WEB-INF/tlds/AlanXUpload.tld” %>

<%@ page language=”java” import=”java.util.*” pageEncoding=”UTF-8″%>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>

<html>

<head>

<title>My JSP ‘index.jsp’ starting page</title>

<ax:head/>

</head>

<body>

<ax:body/>

</body>

</html>

6.

注意

1.AlanXUpload.tld的目录与下面相对应

2.   <ax:head/> 必须放在<head><head/>中,<ax:body/> 必须放在<body></body>中

以上几点是官方文档中说明的,本人在使用中发下<ax:head/>和<ax:body/>有诸多的不便,查看源码,把这两个标签去掉,换成代码,就方便的多了,以下是代码,只要添加到合适位置就行了,没有位置限制:

<td  width="100%">
		<div>
			<div id="AlanX">
				<p>
					如果您看到这段文字,说明可能出现如下情况
				</p>
				<p>
					1.flash插件版本太低,需要升级到至少9.0.0版本
				</p>
				<p>
					2.参数配置有错误
				</p>
			</div>
		</div>
		
<script type="text/javascript" src="<%=request.getContextPath() %>/AlanX/swfobject.js">
</script>
<script type="text/javascript">
var flashvars = {};
flashvars.uploadUrl = "<%=request.getContextPath() %>/url……";
flashvars.extensionName = "*.*";
flashvars.extensionDisp = "AlanX上传组件";
flashvars.maxFileN = 100;
flashvars.maxFileSize = 104857600;
flashvars.maxAllFileSize = 10485760001048576000;
flashvars.waitForProgress = "false";
flashvars.errorContinue = "true";
flashvars.showLogoTxt = "true";
var params = {};
var attributes = {};
swfobject.embedSWF("<%=request.getContextPath() %>/AlanX/AlanX.swf", "AlanX", "500", "40", "9.0.0",
		"<%=request.getContextPath() %>/AlanX/expressInstall.swf", flashvars, params, attributes);</script>

这样灵活度很高,可以随便就行配置。

此外还应注意

1、flash脚本是另外重新启动一个连接,不会传递session,

解决方法是你把sessionid传过去

2、传递参数的时候只能传递一个,不能用"&"符号,我开发的时候是这样的,希望以后版本改正这个问题


Struts2中使用

只需在Action中声明下面几个变量,并生成get set方法就行了 。

private File Filedata;

private String FiledataContentType;

private String FiledataFileName;

private String Filename;

private String Upload;

在Struts2中我们看到的是单个对象,而不是数组,所以在使用其实就是重复调用strut2,比较占用资源。


总之批量上传还是要慎用,要控制最多文件的个数和大小。


 类似资料: