`

SWFupload文件上传实例

 
阅读更多

最近事儿不多,就研究了下SWFupload,在这里记录下。

所用技术和实现的效果:使用Servlet实现的文件上传、下载

 

1、在项目中导入上传所需要的几个JAR包:

 commons-beanutils-1.7.0.jar

commons-collections-3.2.jar

commons-fileupload-1.2.1.jar

commons-io-1.3.2.jar

commons-lang-2.3.jar

commons-logging-1.0.4.jar

 (可以在附件中下载)

 

2、导入SWFupload所需要的几个JS包:

<script type="text/javascript" src="swfupload/swfupload.js"></script>
<script type="text/javascript" src="swfupload/swfupload.swfobject.js"></script>
<script type="text/javascript" src="swfupload/swfupload.queue.js"></script>
<script type="text/javascript" src="swfupload/fileprogress.js"></script>
<script type="text/javascript" src="swfupload/handlers.js"></script>
 这几个包有些根据需要进行修改了,所以不是标准的。标准的可以去官网上下。(我这打不开,所以就没下,直接用的公司现成的)。
另外还有一个swf文件:swfupload.swf(也可以在附件中下载)

 

因为后面有用到Jquery,所以还需要导入Jquery的包:

<script type="text/javascript" src="js/jquery-1.4.2.js"></script>

 

3、用到的JS,主要是SWFupload所需要的一系列配置:

<script type="text/javascript">
	var swfu;
	SWFUpload.onload = function () { 
	var settings = {    
	flash_url : '<%=path%>/swfupload/swfupload.swf',    
	upload_url: '<%=path%>/FileUploadServlet?flag=1',
	//file_size_limit:指定要上传的文件的最大体积,可以带单位,合法的单位有:B、KB、MB、GB,如果省略了单位,则默认为KB。该属性为0时,表示不限制文件的大小
	file_size_limit : '20000.0 MB',//单个文件大小
	
	//file_types:指定了允许上传的文件类型,当有多个类型时使用分号隔开,比如:*.jpg;*.png ,允许所有类型时请使用 *.*
	file_types : '*.doc;*.xls;*.txt;*.jpg;*.jpeg;*.png;*.bmp;*.dwg;*.dwf;*.zip;*.rar;*.docx;*.xlsx',//能够上传的文件类型
	
	//file_types_description:指定在文件选取窗口中显示的文件类型描述,起一个提示和说明的作用
	file_types_description :'全部文件',//文件类型描述
	
	//file_upload_limit:指定最多能上传多少个文件,当上传成功的文件数量达到了这个最大值后,就不能再上传文件了,也不能往上传队列里添加文件了。
	//把该属性设为0时表示不限制文件的上传数量。
	file_upload_limit : 100,//每次允许上传的文件个数
	
	//file_queue_limit:指定文件上传队列里最多能同时存放多少个文件。当超过了这个数目后只有当队列里有文件上传成功、上传出错或被取消上传后,
	//等同数量的其他文件才可以被添加进来。当file_upload_limit的数值或者剩余的能上传的文件数量小于file_queue_limit时,则取那个更小的值
	file_queue_limit : 0,
	
	custom_settings : {
	progressTarget : 'fsUploadProgress',
	cancelButtonId : 'btnCancel',    
	uploadButtonId : 'btnUpload',   
	myFileListTarget : 'idFileList'    },    
	debug: false,    
	auto_upload:false,    
	button_image_url : 'images/btn_xzwj.gif',//选择文件的按钮图片位置
	button_placeholder_id : 'spanButtonPlaceholder', //指定一个dom元素的id,该dom元素在swfupload实例化后会被Flash按钮代替,这个dom元素相当于一个占位符   
	button_width: 100,    
	button_height: 22,    
	swfupload_loaded_handler : swfUploadLoaded,    
	file_queued_handler : fileQueued,    
	file_queue_error_handler : fileQueueError,    
	file_dialog_complete_handler : fileDialogComplete,    
	upload_start_handler : uploadStart,   
	upload_progress_handler : uploadProgress,    
	upload_error_handler : uploadError,    
	upload_success_handler : uploadSuccess,//uploadSuccess事件侦听函数    
	upload_complete_handler : uploadComplete, //当一次文件上传的流程完成时(不管是成功的还是不成功的)会触发该事件,该事件表明本次上传已经完成,上传队列里的下一个文件可以开始上传了。该事件发生后队列中下一个文件的上传将会开始   
	queue_complete_handler : queueComplete,     
	minimum_flash_version : '9.0.28',    
	swfupload_pre_load_handler : swfUploadPreLoad,  
	swfupload_load_failed_handler : swfUploadLoadFailed    
	};    
	swfu = new SWFUpload(settings);
	}   
</script>
 SWFupload参数详解:http://hanxin0311.iteye.com/blog/1915615

 

4、用到的样式:

<style type="text/css">
.uploadBar { display:block; width: 0px; height: 5px; border: solid 1px #445566; background-color: blue; overflow:hidden; }
TR.uploadTR { color:#234245; height:22px; }
TD.uploadTD { border-top: 1px dotted #CCCCCC }
.uploadCancel { border-bottom: solid 1px blue; cursor:pointer; text-decoration:none; }
.uploadFileList {  border-collapse:collapse; width:90%; height:22px; font-size:12px; text-align:center; font-family:'微软雅黑'; margin-bottom:5px; }
.uploadFileList .uploadTitle { vertical-align: middle; font-weight:700; background:#006e58; border-collapse:collapse; height:22px; color:#fff }
.uploadFileList .uploadTitle b { color:#FFFFFF }
.uploadFileList td { border:1px solid #ccc; text-ident:2px; white-space:nowrap; color:#006e57; line-height:22px; text-align:center; text-decoration:none; }
.uploadFileList .tr1 { background:#fff; height:22px }
.uploadFileList .tr2 { background:#F0F8FC; height:22px; }
.uploadFileList .tr_over { background:#DEEFF9; height:22px }
.swfupload{ float:left;}
 </style>
 

 

5、页面布局:

<body topmargin="0px" leftmargin="10px" rightmargin="10px" style="background:none;">
<table width="100%" cellspacing="4" cellpadding="4" border="0">
<tbody>
<tr>
<td class="DH1">
<table width="100%" cellspacing="4" cellpadding="4" border="0" bgcolor""#FCFCFC">
<tbody>
<tr>
<td class="DH2">
<strong>
批量上传文件
<br /> 
支持的文件类型:*.doc;*.xls;*.txt;*.jpg;*.jpeg;*.png;*.bmp;*.dwg;*.dwf;*.zip;*.rar;*.docx;*.xlsx;
<br />
单个文件最大不能超过:20000.0MB
</strong>
</td>
<td class="DH2" align="right"></td>
</tr>
</tbody>
</table>
<div id="content">
<form id="form1" method="post" enctype="multipart/form-data" action="/FileUploadServlet?flag=1">
<table width="90%" cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td>
<span id="spanButtonPlaceholder"></span>
<input id="btnUpload" type="button" value="上传文件" class="btn_scwj"/>
<input id="btnCancel" type="button" value="取消全部上传" disabled="disabled" class="btn_qxqbsc" />

</td>
</tr>
</tbody>
</table>
<!-- 显示上传文件列表的table -->
<table id="idFileList" class="uploadFileList">
<tbody>
<tr class="uploadTitle">
<td><b>文件名</b></td>
<td><b>文件大小</b></td>
<td><b>状态</b></td>
<td><b>操作</b></td>
</tr>
</tbody>
</table>
等待上传<span id="idFileListCount">0</span> 个 ,
成功上传<span id="idFileListSuccessUploadCount">0</span> 个
<div id="divSWFUploadUI" style="visibility: hidden;">
<input id="returnfield" type="text" value=""/></div>
<noscript style="padding-bottom: 10px; margin: 10px 5px; padding-left: 15px; padding-right: 15px; display: block; padding-top: 10px"></noscript>
<div style="border-bottom: #ff9966 1px solid; padding-bottom: 10px; background-color: #ffff66; margin: 10px 5px; padding-left: 15px; padding-right: 15px; display: none; border-top: #ff9966 1px solid; padding-top: 10px" id="divLoadingContent" class="content">文件上传界面正在载入,请稍后...</div>
<div style="border-bottom: #ff9966 1px solid; padding-bottom: 10px; background-color: #ffff66; margin: 10px 5px; padding-left: 15px; padding-right: 15px; display: none; border-top: #ff9966 1px solid; padding-top: 10px" id="divLongLoading" class="content">文件上传界面载入失败,请确保浏览器已经开启对javascript的支持,并且已经安装可以工作的flash插件版本。</div>
<div style="border-bottom: #ff9966 1px solid; padding-bottom: 10px; background-color: #ffff66; margin: 10px 5px; padding-left: 15px; padding-right: 15px; display: none; border-top: #ff9966 1px solid; padding-top: 10px" id="divAlternateContent" class="content">很抱歉,文件上传界面无法载入,请安装或者升级您的flash插件。
<br>解决方案:<br>
1.请点击 <a href="download/adobe flash player activex_10.0.45.2.exe" target="_blank">下载插件</a>,获取adobe flash player插件
<br>
2.请访问:<a href="http://www.adobe.com/shockwave/download/download.cgi?p1_prod_version=shockwaveflash" target="_blank">http://www.adobe.com/shockwave/download</a> adobe网站(外网),获取最新的flash插件。</div>
</form>
</div>
</td>
</tr>
</tbody>
</table>

<!-- 显示已经上传的文件列表的table,主要用来下载 -->
<table id="downFileList" class="uploadFileList" style="display:none;">
<tbody>
<tr class=uploadTitle>
<td><b>文件名</b></td>
<td><b>文件大小</b></td>
<td><b>文件路径</b></td>
<td><b>操作</b></td>
</tr>
</tbody>
</table>
</body>
 

6、用到的Servlet:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class FileUploadServlet extends HttpServlet {
	File tmpDir = null;//初始化上传文件的临时存放目录  
    File saveDir = null;//初始化上传文件后的保存目录 
	/**
	 * Constructor of the object.
	 */
	public FileUploadServlet() {
		super();
	}

	/**
	 * Destruction of the servlet. <br>
	 */
	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		request.setCharacterEncoding("UTF-8");
		this.doPost(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html");
		response.setCharacterEncoding("UTF-8");
		Integer flag = 1;//1、上传 2、下载
		flag = Integer.parseInt(request.getParameter("flag"));
		if(flag==1){
		String retuStr="failed";
		//判断是普通表单,还是带文件上传的表单。
		//文件上传的表单有enctype="multipart/form-data"的属性,取值时不能按普通表单接收值那样直接获取。
		if(ServletFileUpload.isMultipartContent(request)) {
		    //用 DiskFileItemFactory 创建新的 file items (只是临时的)
		    //DiskFileItemFactory 创建FileItem 实例,并保存其内容在内存或者硬盘中
		    //通过一个阀值来决定这个 FileItem 实例是存放在内存或者硬盘中
		    DiskFileItemFactory factory = new DiskFileItemFactory();
		    //设置阀值大小,不设置的话,默认10k,超过这个阀值,FileItem将直接写入到磁盘
		    factory.setSizeThreshold(1024*10);
		    //设置临时文件夹
		    //不设置,默认为系统默认Temp文件路径,调用 System.getProperty("java.io.tmpDir") 获取
		    //超过阀值的 FileItem 实例将存放在这个目录中
		    factory.setRepository(tmpDir);
		    //构造servletFileUpload 的实例,该实例提供工厂模式创建FileItem的DiskFileItemFactory实例
		    ServletFileUpload fileUpload = new ServletFileUpload(factory);
		    //设置一个完整的请求允许的最大大小(注意是完整请求,包括非file类型的表单,比如Text类型)
		    fileUpload.setSizeMax(10*1024*1024);
		    //设置所允许的最大的单个上传文件大小(对应一个FileItem对象)
		    fileUpload.setFileSizeMax(10*1024*1024);
		 
		    try {
		        //每一个FileItem 对应一个 request 请求中from表单中的 input 元素
		        //解析 request 请求,将request中提交的值存入List数组
		    	List<FileItem> fileItems = fileUpload.parseRequest(request);
					Iterator i = fileItems.iterator(); // 依次处理每一个文件:
					String fileName="";//文件名称
					String phyFileName="";//文件物理名称
					String filetype="";//文件类型
					long filesize=0;//文件大小
					String filepath = "";//文件所在物理目录
					while (i.hasNext()) {
						FileItem fi = (FileItem) i.next(); 
						//isFormField方法用来判断FileItem对象里面封装的数据是一个普通文本表单字段,还是一个文件表单字段。
						//如果是普通文本表单字段,返回一个true否则返回一个false。因此可以用该方法判断是否是普通表单域还是文件上传表单域。
						if (!fi.isFormField()) {
							//getName方法用来获得文件上传字段中的文件名
							//getFieldName方法用来返回表单标签的name属性的值
							fileName= fi.getName().substring(fi.getName().lastIndexOf("\\") + 1); //获取文件名称
							//此方法用来获得上传文件的类型,即标段字段元素描述头属性“content-type”的值,如image/jpeg。
							//如果FileItem对象对应的是普通的表单字段,将返回null。
							filetype = fi.getContentType();
							//getSize:返回上传文件的大小。
							filesize=fi.getSize();
							System.out.println("文件类型:"+filetype);
							System.out.println("大小:"+fi.getSize());//byte
							//自定义存在数据库中的名称
							phyFileName= System.currentTimeMillis()+ fileName.substring(fileName.lastIndexOf("."));
							filepath=saveDir +"\\"+ phyFileName;
							//write方法将FileItem对象中的内容保存到某个指定的文件中。如果FileItem对象中的内容是保存在某个临时文件中,
							//该方法完成后,临时文件可以会被删除。该方法也可以将普通表单字段保存在一个文件中,
							//但最主要的用途是把上传的文件内容保存在本地文件系统中。
							fi.write(new File(filepath));
						} else {
							//getString方法将FileItem对象中保存的数据流内容以一个字符串返回。
							//它有两个重载形式。public java.lang.String getString()和public java.lang.String getString(java.lang.String encodeing) throws java.io.UnsupportedEncodingException。
							//前者使用缺省的字符集编码将主体内容转换成字符串,
							//后者使用参数指定的字符集编码。如果在读取普通表单字段元素的内容时,出现了乱码现象,可以调用第二个方法,并传入 正确的字符集编码名称。
							String desc = fi.getString("UTF-8");
			                System.out.println("文件描述:" + desc);
						}
					}
					//拼接“上传成功以后出发的uploadSuccess”方法需要的数据字符串
					retuStr="<file><result>successed</result><filename>"+fileName+"</filename><filesize>"+filesize+"</filesize><filepath>"+filepath+"</filepath></file>";
		  }catch (Exception e) {
		        e.printStackTrace();
		  }finally{
			  
		  } 
			PrintWriter out = response.getWriter();
			//retuStr = new String(retuStr.getBytes("ISO8859-1"));
			System.out.println(retuStr);//作为uploadSuccess方法serverData的参数值,可以由retuStr告知前台是否上传成功
			out.println(retuStr);
			out.flush();
			out.close();
		}else {
			    throw new RuntimeException("请设置form表单的enctype属性");
			}
		}else{ //下载
			try{
				String filepath = request.getParameter("filepath");//获取文件路径
				System.out.println(filepath);
				String filename = request.getParameter("filename");//获取文件名称
//				filename = new String()
				System.out.println(filename);
				if(null!=filepath && !filepath.equals("")){
					File fileLoad = new File(filepath);
					FileInputStream in = null;
					// 创建一个向客户端的输入流
					byte b[] = new byte[1024];
					File Tfile = new File(filepath);
					if (!Tfile.exists()) throw new Exception("没有找到您需要的资源!");
					//这个头文件很关键,必须告知filename,否则系统会自动将文件以txt的形式下载,且文件名称为请求的Servlet名称(文件名称:FileUploadServlet.txt)
					response.setHeader("Content-Disposition", "attachment; filename="+ new String(filename.getBytes("GB2312"),"ISO-8859-1"));	
					OutputStream out = response.getOutputStream();
					in = new FileInputStream(fileLoad);
					int i = 0;
					while ((i = in.read(b)) != -1) {
						out.write(b, 0, i);
					}
					out.flush();
					out.close();
					}
				}catch (Exception e) {
					response.setCharacterEncoding("UTF-8");
					response.getWriter().write("<html><script>alert('"+e.getMessage()+"');</script></html>");
					response.getWriter().flush();
					response.getWriter().close();
				}
			}
    }  

/* 对上传文件夹和临时文件夹进行初始化 
*/  
@Override  
public void init() throws ServletException {  
	super.init();  
	String tmpPath = "D:\\tmpDir";  
	String savePath = "D:\\saveDir";  
	tmpDir = new File(tmpPath);//通过将给定路径名字符串转换为抽象路径名来创建一个新 File实例。
	saveDir = new File(savePath);  
	if(!tmpDir.isDirectory())//测试此抽象路径名表示的文件是否是一个目录  
	tmpDir.mkdir(); //若不止,则创建此抽象路径名指定的目录 
	if(!saveDir.isDirectory())  
	     saveDir.mkdir();  
	}  
}

 FileItem常用方法参考:
http://blog.csdn.net/smallhorn/article/details/7864658
http://blog.csdn.net/chinaliuyan/article/details/7002014

 

7、在文件上传之后需要触发handlers.js中的uploadSuccess方法,这个方法有修改,主要修改如下:

/**
 * 当一个文件上传成功后会触发该事件
 * @param {} file:文件信息对象
 * @param {} serverData:服务器端输出的数据
 */
function uploadSuccess(file, serverData) {
	//serverData:是从服务器端返回来的数据
	var isSuccess = (serverData.indexOf("successed")>=0?true:false);
	var returnstr="";
	try {
		if(isSuccess){
			var data = $.parseXML(serverData);
			var filename = $(data).find("filename").text();//文件名
			var filesize = $(data).find("filesize").text();//文件大小
			filesize = getFilesize(filesize);
			var filepath = $(data).find("filepath").text();//文件路径
			var tableStr = "<tr><td>"+filename+"</td><td>"+filesize+"</td><td>"+filepath+"</td><td><a onclick=fileDownLoad(this) href='javascript:void(0);'>下载</a></td>";
			$("#downFileList").append(tableStr);
			if(!$("#downFileList").is(":visible")){//隐藏状态
				$("#downFileList").show();
			}
			var tr = document.getElementById(file.id);
			var divs=document.getElementById("divSWFUploadUI");
			returnstr=document.getElementById('returnfield').value;
			if(returnstr==""){
				returnstr=serverData.substring(serverData.indexOf("successed")+9,serverData.length);
				
			}
			else
			{
				returnstr=returnstr+"*"+serverData.substring(serverData.indexOf("successed")+9,serverData.length);
			}
			document.getElementById('returnfield').value=returnstr;
			//alert(returnstr);
			tr.style.color="green";
			var bar = document.getElementById(file.id+"_bar");
			bar.parentNode.innerHTML="上传成功";
			var delObject = document.getElementById(file.id+"_del");
			delObject.parentNode.innerHTML="&nbsp;";
			document.getElementById(this.customSettings.myFileListTarget+"Count").innerHTML=this.getStats().files_queued;
			
		}else{
			var tr = document.getElementById(file.id);
			tr.style.color="red";
			var bar = document.getElementById(file.id+"_bar");
			bar.parentNode.innerHTML="上传失败:"+serverData;
			var delObject = document.getElementById(file.id+"_del");
			delObject.parentNode.innerHTML="&nbsp;";
		}
	} catch (ex) {
		this.debug(ex);
	}
}


/**
 * 
 * @param {} filesize:用byte表示的文件大小
 * @return {}用KB或MB或byte表示的文件大小
 */
function getFilesize(filesize){
	var	filesize2 = (parseInt(filesize)/1024/1024);//由byte转成MB
	var size = filesize;
	if(filesize2>1){//说明超过1M
		size = (filesize2.toFixed(2))+"MB";//保留两位小数
	}else if(filesize2<1 && filesize2>0){//说明是KB
		size = ((parseInt(filesize)/1024).toFixed(0))+"KB";//由byte转成KB,取整
	}else{
		size = (filesize)+"byte";
	}
	return size;
}


/**
 * 文件下载
 * @param {} filepath:文件所在物理目录
 */
function fileDownLoad(obj){
var $tr = $(obj).parent().parent();//TR
var filepath = $tr.children("td").eq(2).text();//获取文件路径
var filename = $tr.children("td").eq(0).text();//获取文件名称
if(filepath!='' && filepath!=null){
	if(confirm("是否进行文件下载?")){
	//alert(filepath+"\n"+window.location);
	var urls = (window.location+'')+"/FileUploadServlet?filepath="+filepath+"&filename="+filename+"&flag=2&time="+(new Date()).getTime();
	if ($("#bodyFileDown").length <1) 
	{
		$("body").append("<iframe id='bodyFileDown' src='' ></iframe>");
		$("#bodyFileDown").hide();
	}
	$("#bodyFileDown").attr("src", urls);
	}
}
}
 
分享到:
评论

相关推荐

    swfupload多文件上传带进度条实例

    **SWFUpload 多文件上传带进度条实例详解** SWFUpload 是一款开源的JavaScript库,专门用于在网页上实现文件的多选上传,并且支持显示上传进度条,为用户提供更好的交互体验。在这个实例中,我们将探讨如何在VS2012...

    基于swfupload的上传实例带进度条

    总的来说,基于SwfUpload的上传实例结合进度条和仿QQ邮箱附件效果,是一个优秀的文件上传解决方案,尤其适合需要大量文件交互的Web应用。通过合理地利用其提供的API和事件机制,开发者可以创建出高效、友好的文件...

    swfupload多选上传实例

    **SWFUpload 多选上传实例详解** 在Web开发中,文件上传是常见的功能之一,尤其是在用户需要上传多个文件时,传统的HTML表单提交方式往往无法满足需求,因为它一次只能选择一个文件。为了解决这一问题,SWFUpload...

    swfUpload 多文件上传php实例代码

    php多文件上传 swfupload多文件上传 php源码swfUpload 多文件上传 php多文件上传 swfupload多文件上传 php源码swfUpload 多文件上传 php多文件上传 swfupload多文件上传 php源码swfUpload 多文件上传php实例代码...

    swfupload文件上传控件

    **SWFUpload 文件上传控件详解** 在网页开发中,文件上传功能是不可或缺的一部分,而SWFUpload就是一款优秀的文件上传控件。它利用Flash技术,提供了多文件上传和进度显示的功能,使得用户在上传大文件或多个文件时...

    swfupload多文件上传实例

    **SwfUpload 多文件上传实例详解** SwfUpload 是一款功能强大的JavaScript和Flash结合的文件上传组件,它允许用户在网页上实现多文件选择和批量上传的功能。由于Flash技术的支持,SwfUpload 可以提供比纯JavaScript...

    swfUpload+多文件上传php实例代码

    本实例代码是将SWFUpload与PHP结合使用,创建一个多文件上传的功能。以下是对这个实例代码中涉及的关键知识点的详细解释: 1. **SWFUpload 初始化**: 在HTML页面中,需要通过JavaScript初始化SWFUpload实例。这...

    SwfUpload文件上传demo

    在这个"SwfUpload文件上传demo"中,我们可以深入理解SwfUpload的工作原理、特性以及如何在实际项目中应用。 1. **SwfUpload工作原理**: SwfUpload 利用Flash插件创建一个透明的按钮,用户点击该按钮后,可以触发...

    swfupload文件上传源码ASP

    这个"SWFUpload文件上传源码ASP"是针对ASP(Active Server Pages)开发的,旨在为ASP应用程序提供一个用户友好的多文件上传解决方案。下面将详细阐述SWFUpload的工作原理以及如何在ASP环境中集成和使用它。 1. **...

    最新swfupload文件上传

    SWFUpload 是一款著名的文件上传组件,尤其在Web开发中被广泛应用。它巧妙地结合了Flash技术和JavaScript,为用户提供了一种高效、用户友好的多文件上传解决方案。在本文中,我们将深入探讨SWFUpload的工作原理、...

    swfupload上传实例

    这个"swfupload上传实例"是一个具体的示例,展示了如何在PHP环境中集成SWFUpload以实现高效的文件上传功能。 ### 1. SWFUpload 概述 SWFUpload 是一款开源项目,利用Adobe Flash插件(SWF文件)作为前端界面,提供...

    ExtJs4.1 swfupload 多文件上传实例

    前后台已经融合 解压放在.net 3.5下就可以运行 包含 Extjs4.1 UploadPanel.js swfupload.js swfupload.swf swfupload_fp9.swf Upload.aspx Upload.aspx.cs UploadPanel.htm upload

    swfupload多文件上传jsp+servlet(SSH可用)

    SwfUpload是一款强大的JavaScript文件上传组件,它支持多文件上传功能,且在Web应用程序中广泛使用。本项目结合了jsp和servlet技术,同时也提供了与SSH框架的集成,使得文件上传功能可以在各种Java Web项目中无缝...

    最简单的swfupload上传实例,带中文文档,多文件上传,上传进度条

    下载了一些前辈门和官方的一些实例,都写得太复杂了,有用没用的都堆在一起,根本看不清楚原理,花了很大功夫总算弄明白了,把一些不必要的代码全部删除,尽量做到最简,希望对大家有帮助,不要像我开始接触白费了很...

    swfupload asp版 asp上传大文件,批里上传

    SWFUpload 是一个开源的JavaScript库,用于在网页上实现高级的文件上传功能。它尤其适合处理大文件和批量上传,提供了用户友好的界面,包括进度条显示,从而提升了用户体验。在ASP环境中,SWFUpload 可以很好地解决...

    swfupload上传组件应用实例Demo

    所有后来研究了下上传相关知识, 发现swfupload是一个不错的选择. 所以做了一个demo, 分享给大家. 特色: 1)利用javascript+flash实现纯Client的上传功能; 2)这样一来可以最大限度降低服务器端的压力; 3)实时显示...

    swfupload 批量上传文件

    **SWFUpload 知识点详解** ...通过以上步骤和知识点,你将能够有效地使用SWFUpload实现批量文件上传功能,并在MyEclipse 6.5环境下进行开发和调试。记住,持续优化和测试是确保上传功能稳定性和用户体验的关键。

    swfupload一次上传多个文件实例(PHP)

    这个实例是基于PHP的,因此我们将深入探讨如何利用SWFUpload与PHP结合,实现高效、友好的多文件上传体验。 首先,SWFUpload是通过Flash技术实现的,因为Flash支持在浏览器端选择并上传多个文件。它提供了丰富的API...

Global site tag (gtag.js) - Google Analytics