`
小杨学JAVA
  • 浏览: 886431 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
收藏列表
标题 标签 来源
封装swfupload,基于jquery swfupload
/********************************************************************************************************
 * swfuInit
 *----------------------------------------------------------------------------------------------------
 *	封装swfupload上传
 *	document.write("<script language=\"javascript\" src='..\/js\/j.js' > <\/script>");
 *----------------------------------------------------------------------------------------------------
 * @Date 2013-12-16
 * @Version 1.3.2
 * @jQueryVersion 1.4+
 * @SWFUploadVersion 2.0+
 **/
var UN_SWFUpload = UN_SWFUpload || {};
UN_SWFUpload.version = "1.3.2 2013-12-16";
UN_SWFUpload.swfuploadList = {};
UN_SWFUpload.swfuList = [];
UN_SWFUpload.SPLITE = ':';
UN_SWFUpload.ART_DIALOG_VER = art && art.dialog ? art.dialog.fn.version: '';
UN_SWFUpload.movieCount = 0;
UN_SWFUpload.uploadTip;
// expand object
UN_SWFUpload.add = function(id, o) {
	return UN_SWFUpload.swfuploadList[id] = o;
};
UN_SWFUpload.get = function(id) {
	return UN_SWFUpload.swfuploadList[id];
};
UN_SWFUpload.destroy = function(id) {
	if (!id || id == undefined || id == null || id == "") {
		for (var o in UN_SWFUpload.swfuploadList) {
			UN_SWFUpload.swfuploadList[o].destroy();
			if (document.getElementById(o)) {
				document.getElementById(o).innerHTML = '';
			}
		}
	} else {
		UN_SWFUpload.swfuploadList[id].destroy();
		if (document.getElementById(id)) {
			document.getElementById(id).innerHTML = '';
		}
	}
};
UN_SWFUpload.serializeData = function() {
	var _data = new Array();
	for (var o in UN_SWFUpload.swfuploadList) {
		_data.push(UN_SWFUpload.swfuploadList[o].getPostData());
	}
	return _data.join('&');
}; (function($) {
	"use strict";
	$.swfu = $.swfu || {};
	$.extend($.swfu, {
		version: "1.3.2",
		getAccessor: function(obj, expr) {
			/* obj:swfuInit
	    	 * 方法名/方法参数
	    	 * $("#list").swfu('getParam', 'param');
	    	 */
			var ret, p, prm = [],
			i;
			if (typeof expr === 'function') {
				return expr(obj);
			}
			ret = obj[expr];
			if (ret === undefined) {
				try {
					if (typeof expr === 'string') {
						prm = expr.split('.');
					}
					i = prm.length;
					if (i) {
						ret = obj;
						while (ret && i--) {
							p = prm.shift();
							ret = ret[p];
						}
					}
				} catch(e) {}
			}
			return ret;
		},
		htmlDecode: function(value) {
			if (value && (value == ' ' || value == ' ' || (value.length === 1 && value.charCodeAt(0) === 160))) {
				return "";
			}
			return ! value ? value: String(value).replace(/>/g, ">").replace(/</g, "<").replace(/"/g, '"').replace(/&/g, "&");
		},
		htmlEncode: function(value) {
			return ! value ? value: String(value).replace(/&/g, "&").replace(/\"/g, """).replace(/</g, "<").replace(/>/g, ">");
		},
		format: function(format) { //jqgformat
			var args = $.makeArray(arguments).slice(1);
			if (format === undefined) {
				format = "";
			}
			return format.replace(/\{(\d+)\}/g,
			function(m, i) {
				return args[i];
			});
		},
		isNumeric: function(obj) {
			return ! isNaN(parseFloat(obj)) && isFinite(obj);
		},
		isWindow: function(obj) {
			return obj != null && obj == obj.window;
		},
		extend: function(methods) {
			// swfu可以使用$.swfu.extend({});extend other methods
			$.extend($.fn.swfuInit, methods);
			//			if (!this.no_legacy_api) {
			$.fn.extend(methods);
			//			}
		}
	});
	$.fn.swfuInit = function(settings) {
		if (typeof settings == 'string') {
			// var fn = $.swfuInit[pin];
			var fn = $.swfu.getAccessor($.fn.swfuInit, settings);
			if (!fn) {
				throw ("swfuInit - No such method: " + settings);
			}
			var args = $.makeArray(arguments).slice(1);
			return fn.apply(this, args);
		}
		return this.each(function() {
			var elem = $(this);
			if (!elem || elem.length == 0) {
				alert('该对象不存在.');
				return;
			}
			if (this._swfu) {
				return;
			}
			/* 合并默认参数和用户自定义参数 */
			var p = $.extend(true, {},
			$.fn.swfuInit.defaults, settings || {});
			var _swfu = new SRMSwfu(elem, p);
			_swfu.generate();
			// expandable object
			this._swfu = _swfu;
			this.st = p;
		});
		// return _swfu;
	};
	/**
     * $("#list").getParam(id);
     * $("#list").swfu('getParam', 'selarrrow');
     * typeof($t.p[pName]) != "undefined" ? $t.p[pName] : null;
     */
	$.swfu.extend({
		getSwfu: function() {
			//  
			return this[0]._swfu;
		},
		getSwfuParam: function(pName) {
			// this 为 swfuInit
			var $t = this[0];
			if (!$t || !$t._swfu) {
				return;
			}
			if (!pName) {
				return $t.st;
			} else {
				var ret = typeof($t.st[pName]) != "undefined" ? $t.st[pName] : (typeof($t._swfu[pName]) != "undefined" ? $t._swfu[pName] : null);
				return ret;
			}
		},
		destroySwfu: function() {
			if (this[0]._swfu != null) {
				this[0]._swfu.destroy();
			}
		},
		getSwfuPostData: function() {
			return this[0]._swfu.getPostData();
		},
		getFileIdArr: function() {
			return this[0]._swfu.fileIdValArr;
		},
		getUploadFileNameArr: function() {
			return this[0]._swfu.uploadFileNameValArr;
		},
		getPicturePathArr: function() {
			return this[0]._swfu.picturePathValArr;
		},
		getPictureSizeArr: function() {
			return this[0]._swfu.pictureSizeValArr;
		}
	});
	/**
     * 对外默认参数
     */
	$.fn.swfuInit.defaults = {
		// 文件ID参数名称
		fileId: 'fileId',
		// 上传控件ID参数名称
		businessId: 'businessId',
		// 附件ID,submit to server
		appendixId: 'appendixId',
		// 附件源文件名,
		uploadFileName: 'uploadFileName',
		// 附件重命名后 文件名
		oldPath: 'oldPath',
		// 上传文件时 的临时路径
		picturePath: 'picturePath',
		// 上传文件的大小 单位:字节
		pictureSize: 'pictureSize',
		// 上传控件ID参数值
		businessIdVal: '',
		// 文件ID参数值
		fileIdVal: [],
		// 附件ID,submit to server,多个附件ID以数组形式
		appendixIdVal: [],
		// 附件源文件名,
		uploadFileNameVal: [],
		// 附件重命名后 文件名
		oldPathVal: [],
		// 上传文件时 的临时路径
		picturePathVal: [],
		// 上传文件的大小 单位:字节
		pictureSizeVal: [],
		// 上传按钮后的描述信息
		descInfo: null,
		// 文件的存放路径
		filePath: '',
		// 是否多选
		multiple: false,
		// 上传文件URL
		uploadFileUrl: "../upload/upload.action",
//		// 删除文件URL
//		delFileUrl: "../upload/delTempFile.action",
		// 提交文件域的参数名称
		filePostName: 'uploadFile',
		// 允许上传文件的类型,以 ; 分割,*.jpg;*.doc
		fileTyps: '*.*',
		fileTypesDesc: 'All File',
		// 默认单位是KB
		fileSizeLimit: '10 MB',
		fileUploadLimit: 10000,
		fileQueueLimit: 10,
		postParams: {},
		confirmTip:false,
		showTip: false,
		showPercent: false,
		downFile: function(serverData, filePath, originalName) {
			/*
        	 * url:ServerData
        	 * filePath:Renamed FileName
        	 * originalName:OriginalFileName
        	 */
			// 下载temp文件
			if (!filePath || filePath == '') {
				if (serverData && serverData.indexOf(UN_SWFUpload.SPLITE) >= 0) {
					var urlArr = serverData.split(UN_SWFUpload.SPLITE);
					for (var i = 0; i < urlArr.length; i++) {
						if (urlArr[i] && urlArr[i] != '') {
							window.open("../upload/download.action?fileUrl=" + urlArr[i]);
						}
					}
				} else {
					window.open("../upload/download.action?fileUrl=" + serverData);
				}
			} else {
				if (serverData && serverData.indexOf(UN_SWFUpload.SPLITE) >= 0) {
					var urlArr = serverData.split(UN_SWFUpload.SPLITE);
					for (var i = 0; i < urlArr.length; i++) {
						if (urlArr[i] && urlArr[i] != '') {
							window.open("../upload/download.action?fileUrl=" + urlArr[i] + "&filePath=" + filePath);
						}
					}
				} else {
					window.open("../upload/download.action?fileUrl=" + serverData + "&filePath=" + filePath)
				}
			}
		},
		delFile : function (serverData) {
			// 删除临时文件的function
			// serverData为上传时服务器返回的数据
			$.ajax({
				url: '../upload/delTempFile.action',
				type: "POST",
				data: {
					'fileUrl': serverData
				},
				timeout: 10000,
				cache: false,
				success: function(data) {
					try {
						//var json = $.parseJSON(data);
	
					} catch(e) {}
	
				},
				error: function() {}
			});
		},
		uploadSuccedHandle: function(postData) {}
	};
	/*
     * 私有函数
     */
	var SRMSwfu = function(elem, settings) {
		if (settings.multiple && (settings.multiple == true || settings.multiple == 'true')) {
			settings.multiple = true;
		}
		if (settings.showTip && (settings.showTip == true || settings.showTip == 'true')) {
			settings.showTip = true;
		}
		if (settings.confirmTip && (settings.confirmTip == true || settings.confirmTip == 'true')) {
			settings.confirmTip = true;
		}
		if (settings.showPercent && (settings.showPercent == true || settings.showPercent == 'true')) {
			settings.showPercent = true;
		}
		this.settings = settings;
		// 下载文件的保存路径
		this.filePath = settings.filePath,
		this.uploadDiv = elem;
		this.prefixName = elem.attr("id");
		this.prefixIndex = UN_SWFUpload.movieCount++;
		this.contextName = elem.attr("id");
		this.progressTarget = elem.attr("id") + "fsUploadProgress";
		this.cancelButtonId = elem.attr("id") + "btnCancel";
		this.buttonId = elem.attr("id") + "spanButtonPlaceHolder";
		this.divStatusId = elem.attr("id") + "divStatus";
		this.biddingFileId = elem.attr("id") + "biddingFile";
		this.delFileButtonId = elem.attr("id") + "delFileButton";
		this.filePostName = settings.filePostName ? settings.filePostName: "uploadFile";
		this.postParams = settings.postParams;
		// 已经上传成功后的文件名
		this.SWF_SELECT_FILE_NAME = "";
		this.swfuObject = {};
		// 事件队列
		this.eventQueue = [];
		// 一次选择的文件数量
		this.selectFileCount = 0;
		// 已上传文件list
		this.fileList = [];
		// 各个参数Array(argumentArray instanceof Array)
		this.fileIdValArr = (settings.fileIdVal instanceof Array) ? (settings.fileIdVal.length == 1 && settings.fileIdVal[0] == '' ? [] : settings.fileIdVal): (settings.fileIdVal ? [settings.fileIdVal] : []);
		this.appendixIdValArr = (settings.appendixIdVal instanceof Array) ? (settings.appendixIdVal.length == 1 && settings.appendixIdVal[0] == '' ? [] : settings.appendixIdVal): (settings.appendixIdVal ? [settings.appendixIdVal] : []);
		this.uploadFileNameValArr = (settings.uploadFileNameVal instanceof Array) ? (settings.uploadFileNameVal.length == 1 && settings.uploadFileNameVal[0] == '' ? [] : settings.uploadFileNameVal): (settings.uploadFileNameVal ? [settings.uploadFileNameVal] : []);
		this.oldPathValArr = (settings.oldPathVal instanceof Array) ? (settings.oldPathVal.length == 1 && settings.oldPathVal[0] == '' ? [] : settings.oldPathVal): (settings.oldPathVal ? [settings.oldPathVal] : []);
		this.picturePathValArr = (settings.picturePathVal instanceof Array) ? (settings.picturePathVal.length == 1 && settings.picturePathVal[0] == '' ? [] : settings.picturePathVal): (settings.picturePathVal ? [settings.picturePathVal] : []);
		this.pictureSizeValArr = (settings.pictureSizeVal instanceof Array) ? (settings.pictureSizeVal.length == 1 && settings.pictureSizeVal[0] == '' ? [] : settings.pictureSizeVal): (settings.pictureSizeVal ? [settings.pictureSizeVal] : []);
		this.fileOrder = this.uploadFileNameValArr.length + 1;
		// flash是否初始化完成
		this.falshReady = false;
		// 是否正在上传中
		this.isUploding = false;
		this.fileSizeWithUnit = $.swfu.isNumeric(settings.fileSizeLimit) ? settings.fileSizeLimit + ' KB': settings.fileSizeLimit;
		// 是否有上传过文件
		this.isUploaded = false;
	};

	SRMSwfu.prototype = {
		generate: function() {
			var self = this;
			//	初始化调用SWFUpload对象初始化
			if (self.uploadDiv) {
				self.uploadDiv.html("");
			}
			var htmls = self.getFlashHTML(self.uploadDiv);
			var upObjId = self.prefixName;
			// 所有已经选择的文件名称for多选
			var currSelectFile = '';
			var _swfSet = {
				file_types: self.settings.fileTyps,
				file_types_description: self.settings.fileTypesDesc,
				file_size_limit: self.settings.fileSizeLimit,
				// 最多上传文件数量
				file_upload_limit: self.settings.fileUploadLimit,
				// 队列文件数量
				file_queue_limit: self.settings.fileQueueLimit,
				debug: false,
				// Button settings
				// 单选OR多选
				button_action: self.settings.multiple ? SWFUpload.BUTTON_ACTION.SELECT_FILES: SWFUpload.BUTTON_ACTION.SELECT_FILE,
				button_image_url: "../images/swf_btn_bg.gif",
				button_width: "76",
				button_height: "26",
				button_text: "<span class='theFont'>上传</span>",
				button_text_style: ".theFont { font-size: 11;font-weight:bold;text-align:center; color:#323d1f;background-color:transparent; }",
				button_text_left_padding: 1,
				button_text_top_padding: 4,
				flash_url: "../js/SWFUpload/swfupload.swf",
				upload_url: (self.settings.uploadFileUrl && self.settings.uploadFileUrl != "") ? self.settings.uploadFileUrl: "../upload/upload.action",
				// file_dialog_start_handler : fileDialogStart, 
				file_post_name: self.filePostName,
				custom_settings: {
					progressTarget: self.progressTarget,
					cancelButtonId: self.cancelButtonId

				},
				button_cursor: SWFUpload.CURSOR.HAND,
				post_params: self.postParams,
				button_placeholder_id: self.buttonId,
				// 选中文件后确定后执行,然后file_dialog_complete_handler
				file_queued_handler: function(file) {
					//	    				alert('选中文件后确定后执行file_queued_handler');
					// 当文件选择对话框关闭消失时,如果选择的文件成功加入上传队列,那么针对每个成功加入的文件都会触发一次该事件(N个文件成功加入队列,就触发N次此事件)。
					//	    				this.customSettings.queue = this.customSettings.queue || new Array();
					//	    		        while (this.customSettings.queue.length > 0) {
					//	    		            this.cancelUpload(this.customSettings.queue.pop(), false);
					//	    		        }
					//	    				this.customSettings.queue.push(file);
					var progress = new FileProgress(file, this.customSettings.progressTarget);
					progress.setStatus("Pending...");
					progress.toggleCancel(true, this);
					if (self.settings.multiple) {
						// 多选所有已选 的文件名 
						currSelectFile += file.name + '<br/>';
					} else {
						currSelectFile = file.name;
					}
				},
				file_dialog_complete_handler: function(numFilesSelected, numFilesQueued) {
					if (numFilesSelected > 0 && numFilesQueued > 0) {
						if (self.settings.multiple) {
							self.selectFileCount += numFilesQueued;
							// 多选文件
							if (self.settings.confirmTip && (self.settings.confirmTip == true || self.settings.confirmTip == 'true')) {
								var dialog = art.dialog.confirm("确认要上传已选的 " + numFilesQueued + " 个文件吗?",
										function() {
									try {
										// 开始上传
										self.swfuObject.startUpload();
									} catch(ex) {
										dialog.close();
									}
								},
								function() {
									self.swfuObject.cancelQueue();
								});
							} else {
								// 开始上传
								self.swfuObject.startUpload();
							}
						} else {
							// 单选文件
							self.selectFileCount = numFilesQueued;
							if (self.settings.confirmTip && (self.settings.confirmTip == true || self.settings.confirmTip == 'true')) {
								var dialog = art.dialog.confirm("确认要上传 " + currSelectFile + " 吗?",
								function() {
									try {
										// 单选文件时,删除上一次的文件
										self.delAllFile();
										self.swfuObject.startUpload();
										currSelectFile = '';
									} catch(ex) {
										dialog.close();
									}
								},
								function() {
									// 取消了队列
									self.swfuObject.cancelQueue();
								});
							} else {
								self.delAllFile();
								self.swfuObject.startUpload();
								currSelectFile = '';
							}
						}
					}
				},
				upload_start_handler: function(file) {
					if (!self.isUploding) {
						self.isUploding = true;
					}
					try {
						//完成上传前的最后验证以及其他你需要的操作,例如添加、修改、删除post数据等。
						var progress = new FileProgress(file, this.customSettings.progressTarget);
						progress.setStatus("Uploading...");
						progress.toggleCancel(true, this);
						if (self.settings.showTip) {
							self.settings.showPercent = false;
							if (!UN_SWFUpload.uploadTip) {
								UN_SWFUpload.uploadTip = //art.dialog.tips('正在上传文件 '+file.name+' ,请稍等...', 60);   
								self.getUploadTips('正在上传文件 ' + file.name);
							} else {
								UN_SWFUpload.uploadTip.content('正在上传文件 ' + file.name).title('上传中...').show();
							}
						}
					} catch(ex) {

}
					return true;
				},
				upload_success_handler: function(file, serverData) {
					/*
    				 * 注意不能
	    			 * this.cancelUpload();
	    			 * 不然导致
	    			 * 一个上传完成(发送file信息,并返回200状态时调用此方法)后,
	    			 * 取消只会取消当前文件的上传,而不是取消整个队列上传,所以每隔一个就会被取消
	    			 * 这个upload_success_handler每个文件上传完成都会调用一次,一个文件上传周期没有完成,还会触发upload_complete_handler;uploadComplete(file)
	    			 * 
    				 */
					if (serverData != null && serverData != "") {
						//	self.isUploaded = !self.isUploaded ? true : self.isUploaded;
						if (!self.isUploaded) {
							self.isUploaded = true;
						}
						try {
							// 将上传成功的file保存
							self.fileList.push(file);
							// 上传成功后加入
							self.SWF_SELECT_FILE_NAME = self.SWF_SELECT_FILE_NAME + file.name + UN_SWFUpload.SPLITE;
							//file.id = "singlefile";    
							var progress = new FileProgress(file, this.customSettings.progressTarget);
							progress.setComplete();
							progress.setStatus("Complete.");
							progress.toggleCancel(false);
							var _fileId = $("#" + self.contextName + "fileId");
							var _uploadFileName = $("#" + self.contextName + self.settings.uploadFileName);
							var _picturePath = $("#" + self.contextName + self.settings.picturePath);
							var _pictureSize = $("#" + self.contextName + self.settings.pictureSize);
							if (self.settings.multiple) {
								_fileId.val(_fileId.val() + file.id + UN_SWFUpload.SPLITE);
								_uploadFileName.val(_uploadFileName.val() + file.name + UN_SWFUpload.SPLITE);
								_picturePath.val(_picturePath.val() + serverData + UN_SWFUpload.SPLITE);
								_pictureSize.val(_pictureSize.val() + file.size + UN_SWFUpload.SPLITE);
								var _biddingFile = $("#" + self.biddingFileId);
								if (_biddingFile.html() == "") {
									$("#" + self.biddingFileId).append('[' + self.fileOrder + '] ' + file.name);
								} else {
									$("#" + self.biddingFileId).append('<br/>' + '[' + self.fileOrder + '] ' + file.name);
								}
								// 保存提交参数
								self.fileIdValArr.push(file.id);
								self.uploadFileNameValArr.push(file.name);
								self.picturePathValArr.push(serverData);
								self.pictureSizeValArr.push(file.size);
							} else {
								// 单选只填入选择的文件
								_fileId.val(file.id);
								_uploadFileName.val(file.name);
								_picturePath.val(serverData);
								_pictureSize.val(file.size);
								// 保存提交参数
								self.fileIdValArr = [file.id];
								self.uploadFileNameValArr = [file.name];
								self.picturePathValArr = [serverData];
								self.pictureSizeValArr = [file.size];
							}
						} catch(e) {
							art.dialog.alert("upload_success_handler" + e);
						}
					}
				},
				upload_complete_handler: function(file) {
					if (SWFUpload.FILE_STATUS.COMPLETE == file.filestatus) {
						self.fileOrder++;
						// 多选文件,清除初始化的文件名,把已经上传的加入文件名value
						// oldPath不需要清空,后台需要删除上次的文件
						if (!self.isUploaded) {
							var _picturePath = $("#" + self.contextName + self.settings.picturePath);
							_picturePath.val("");
							var _uploadFileName = $("#" + self.contextName + self.settings.uploadFileName);
							_uploadFileName.val("");

							self.uploadFileNameValArr = [];
							self.picturePathValArr = [];
							// 选择第一个文件
							self.delAllFile();
						}
					}
					/* 
	    		    	 * 计算上传进度,总数量selectFileCount
	    		    	 */
					if (self.settings.showPercent) {
						var percent = Math.ceil(((self.selectFileCount - this.getStats().files_queued) / self.selectFileCount) * 100);
						if (!UN_SWFUpload.uploadTip) {
							//art.dialog.tips('正在上传文件 '+file.name+' ,请稍等...', 60);
							UN_SWFUpload.uploadTip = self.getUploadTips(percent + ' %');
						} else {
							UN_SWFUpload.uploadTip.content(percent + ' %').show();
						}
					}
					//	    		    	SWFUpload.FILE_STATUS = {
					//	    		    			QUEUED		 : -1,
					//	    		    			IN_PROGRESS	 : -2,
					//	    		    			ERROR		 : -3,
					//	    		    			COMPLETE	 	 : -4,
					//	    		    			CANCELLED	 : -5
					//	    		    		};
					if (this.getStats().files_queued === 0) {
						self.isUploding = false;
						// 队列文件全部上传完成
						document.getElementById(this.customSettings.cancelButtonId).disabled = true;
						//    		    			//  把最后的一个:去掉,java SPLITE最后一个舍弃
						//    		    			var _fileId = $("#"+self.contextName+"fileId");
						//    		    			_fileId.val(self.getLastSplitStr(_fileId.val(), UN_SWFUpload.SPLITE));
						var _uploadFileName = $("#" + self.contextName + self.settings.uploadFileName);
						//    		    			_uploadFileName.val(self.getLastSplitStr(_uploadFileName.val(), UN_SWFUpload.SPLITE));
						var _picturePath = $("#" + self.contextName + self.settings.picturePath);
						//    		    			_picturePath.val(self.getLastSplitStr(_picturePath.val(), UN_SWFUpload.SPLITE));
						//    		    			var _pictureSize = $("#"+self.contextName+self.settings.pictureSize);
						//    		    			_pictureSize.val(self.getLastSplitStr(_pictureSize.val(), UN_SWFUpload.SPLITE));
						// 加入参数ARRAY'
						if (self.SWF_SELECT_FILE_NAME != "") {
							var _biddingFileId = $("#" + self.biddingFileId);
							if (!self.settings.multiple) {
								//    		    					// 单选'<a href="javascript:void(0);">',
								//    		    					_biddingFileId.html('<a href="javascript:void(0);" rname="'+_picturePath.val()+'" fname="'+_uploadFileName.val()+'">'+_uploadFileName.val()+'</a>');
								//    		    					$("#"+self.delFileButtonId).html("删 除");
								self.SWF_SELECT_FILE_NAME = '';
							} else {
								// 多选,下载链接不一样
								// <span><a href="javascript:void(0);">'++'</a></span>
								//    		    					var bidFileNameArr = self.uploadFileNameValArr;
								//    		    					var biddingFileHtmlArr = [];
								//    		    					var picturePathArr = self.picturePathValArr;
								//    		    					var bl = bidFileNameArr.length;
								//    		    					$.each(bidFileNameArr, function(i, v){
								//    		    						if(i != bl - 1) {
								//    		    							// 下载文件获取文件名称rname,fname真实文件名
								//    		    							biddingFileHtmlArr.push('<a href="javascript:void(0);" rname="'+picturePathArr[i]+'" fname="'+v+'">['+(i+1)+'] '+v+'</a> <span id="'+i+'delMultipleBtn" class="delMultipleBtn" rname="'+picturePathArr[i]+'" ><a href="javascript:void(0);">删 除</a></span><br/>');
								//    		    						} else {
								//    		    							biddingFileHtmlArr.push('<a href="javascript:void(0);" rname="'+picturePathArr[i]+'" fname="'+v+'">['+(i+1)+'] '+v+'</a> <span id="'+i+'delMultipleBtn" class="delMultipleBtn" rname="'+picturePathArr[i]+'" ><a href="javascript:void(0);">删 除</a></span>');
								//    		    						}
								//    		    					});
								// 多选删除所有文件
								if (self.uploadFileNameValArr.length > 1) {
									$("#" + self.delFileButtonId).html("删除所有文件");
								}
							}
							self.getUploadFileNameHtml();

						}
						// 判断队列没有文件,关闭上传tip
						if (self.settings.showTip || self.settings.showPercent) {
							if (UN_SWFUpload.uploadTip) {
								//UN_SWFUpload.uploadTip.content('上传完成.');
								UN_SWFUpload.uploadTip.title('完成');
								UN_SWFUpload.uploadTip.hide();
								//    		    					UN_SWFUpload.uploadTip.button(
								//    		    					    {
								//    		    					        name: '确定',
								//    		    					        callback: function () {
								//    		    					           this.hide();
								//    		    					        },
								//    		    					        disabled: false
								//    		    					    }
								//    		    					)
								self.uploadCompleteTip('上传完成.');
							}
						}
						if (self.settings.uploadSuccedHandle) {
							self.handleEvent("uploadSuccedHandle", self.getPostData());
						}
					}
				},
				file_queue_error_handler: function(file, errorCode, message) {
					// this 已经是swfupload对象
					try {
						if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
							//	    			            art.dialog.alert("文件队列已满,最多可上传 "+this.settings.file_upload_limit+" 个文件.");   
							art.dialog.alert("一次最多能选择  " + this.settings.file_queue_limit + " 个文件.");
							return;
						}
						var progress = new FileProgress(file, this.customSettings.progressTarget);
						progress.setError();
						progress.toggleCancel(false);
						switch (errorCode) {
						case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
							progress.setStatus("File is too big.");
							art.dialog.alert("文件:" + file.name + " 过大,请选择 " + self.fileSizeWithUnit + " 以内的文件进行上传.");
							//this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
							break;
						case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
							progress.setStatus("Cannot upload Zero Byte files.");
							art.dialog.alert("文件:" + file.name + " 小大为0KB,请选择大于0KB,小于" + self.fileSizeWithUnit + "的文件进行上传.");
							//this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
							break;
						case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
							progress.setStatus("Invalid File Type.");
							art.dialog.alert("请选择类型为 " + this.settings.file_types_description + " 的文件进行上传.");
							//this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
							break;
						default:
							if (file !== null) {
								progress.setStatus("Unhandled Error");
							}
							//this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
							break;
						}
					} catch(ex) {
						//	    			        this.debug(ex);   
						art.dialog.error("上传文件失败,请刷新页面后重试.");
					}
				},

				//	                upload_progress_handler : function (file, bytesLoaded, bytesTotal) {
				//						try {
				//							var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
				//							var progress = new FileProgress(file, this.customSettings.progressTarget);
				//							progress.setProgress(percent);
				//							progress.setStatus("Uploading...");
				//							$(document.body).prepend(percent);
				//						} catch (ex) {
				//							this.debug(ex);
				//						}
				//	    			},    
				upload_error_handler: function(file, errorCode, message) {
					var progress = new FileProgress(file, this.customSettings.progressTarget);
					progress.setError();
					progress.toggleCancel(false);
					switch (errorCode) {
					case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
						progress.setStatus("Upload Error: " + message);
						art.dialog.alert("文件 " + file.name + " 上传失败, 网络错误. Message: " + message);
						break;
					case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
						progress.setStatus("Upload Failed.");
						art.dialog.alert("文件 " + file.name + " 尺寸过大. " + file.size + " 请重新选择. Message: " + message);
						break;
					case SWFUpload.UPLOAD_ERROR.IO_ERROR:
						progress.setStatus("Server (IO) Error");
						art.dialog.alert("服务器I/O设备错误, 文件 " + file.name + ". Message: " + message);
						break;
					case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
						progress.setStatus("Security Error");
						art.dialog.alert("服务拒绝上传此文件, 文件 " + file.name + ". Message: " + message);
						break;
					case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
						progress.setStatus("Upload limit exceeded.");
						art.dialog.alert("文件队列已满,文件 " + file.name + " 上传失败. Message: " + message);
						break;
					case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
						progress.setStatus("Failed Validation.  Upload skipped.");
						art.dialog.alert("文件验证失败,文件 " + file.name + ". Message: " + message);
						break;
					case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
						// If there aren't any files left (they were all cancelled) disable the cancel button   
						if (this.getStats().files_queued === 0) {
							document.getElementById(this.customSettings.cancelButtonId).disabled = true;
						}
						progress.setStatus("Cancelled");
						progress.setCancelled();
						break;
					case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
						progress.setStatus("Stopped");
						break;
					default:
						progress.setStatus("Unhandled Error: " + errorCode);
						art.dialog.alert("未知错误,错误代码  " + errorCode + ", 文件 " + file.name + ", 大小: " + file.size + ". Message: " + message);
						break;
					}
				},
				swfupload_loaded_handler: function() {
					self.falshReady = true;
				}
			};
			self.swfuObject = new SWFUpload(_swfSet);
			self.addToList(self.prefixName, self);
		},
		getFlashHTML: function(divObj) {
			var self = this;
			var delFileButtonHtml = '<span><a style="padding-left:10px;" href="javascript:void(0);" id="' + self.delFileButtonId + '"></a> </span>';
			if (self.uploadFileNameValArr && self.uploadFileNameValArr.length > 1) {
				delFileButtonHtml = '<span><a style="padding-left:10px;" href="javascript:void(0);" id="' + self.delFileButtonId + '">删除所有文件</a> </span>';
			}
			//			// 显示Bidding文件名
			//			var bl = self.uploadFileNameValArr.length;
			//			var _uploadFileNameHtmlArr = [];
			//			$.each(self.uploadFileNameValArr, function(i, v){
			//				if(i != bl - 1) {
			//					_uploadFileNameHtmlArr.push('<a href="javascript:void(0);" rname="'+self.picturePathValArr[i]+'" fname="'+v+'">['+(i+1)+'] '+v+'</a> <span id="'+i+'delMultipleBtn" class="delMultipleBtn"><a href="javascript:void(0);">删 除</a></span><br/>');
			//				} else {
			//					_uploadFileNameHtmlArr.push('<a href="javascript:void(0);" rname="'+self.picturePathValArr[i]+'" fname="'+v+'">['+(i+1)+'] '+v+'</a> <span id="'+i+'delMultipleBtn" class="delMultipleBtn"><a href="javascript:void(0);">删 除</a></span>');
			//				}
			//			});
			var _fileIdValHtml = self.fileIdValArr.join(UN_SWFUpload.SPLITE);
			var _uploadFileNameValue = self.uploadFileNameValArr.join(UN_SWFUpload.SPLITE);
			// 附件IDappendixId
			var _appendixIdValHtml = self.appendixIdValArr.join(UN_SWFUpload.SPLITE);
			// oldPathValArr
			var _oldPathValHtml = self.oldPathValArr.join(UN_SWFUpload.SPLITE);
			// picturePathValArr
			var _picturePathValHtml = self.picturePathValArr.join(UN_SWFUpload.SPLITE);
			// pictureSizeValArr
			var _pictureSizeValHtml = self.pictureSizeValArr.join(UN_SWFUpload.SPLITE);
			var divHtml = [
			// fsUploadProgress
			'<div style="display:none;" id="' + self.progressTarget + '" ></div>', '<div style="display:none;" id="' + self.divStatusId + 'divStatus" ></div>', '<div style="height:28px;">', '<div style="float:left;padding-top:5px;min-width:20px">', '<span id="' + self.biddingFileId + '">' + self.getInitUploadFileNameHtml() + '</span>', delFileButtonHtml, '</div>', '<div style="" id="' + self.buttonId + '"></div>', '<input id="' + self.cancelButtonId + '" type="button" value="Cancel All Uploads" disabled="disabled" style="display:none;"/>', '<span id="' + self.prefixName + 'desc">' + (self.settings.descInfo && self.settings.descInfo == "" ? "点此按钮可以上传小于 " + self.fileSizeWithUnit + " 的文件": (self.settings.descInfo == null ? "":self.settings.descInfo)) + '</span>', '<input name="' + self.settings.businessId + '" id="' + self.contextName + self.settings.businessId + '" type="hidden" value="' + self.settings.businessIdVal + '"/>', '<input name="multiple" id="' + self.contextName + 'multiple" type="hidden" value="' + self.settings.multiple + '"/>', '<input name="' + self.settings.fileId + '" id="' + self.contextName + self.settings.fileId + '" type="hidden" value="' + _fileIdValHtml + '"/>', '<input name="' + self.settings.appendixId + '" id="' + self.contextName + self.settings.appendixId + '" type="hidden" value="' + _appendixIdValHtml + '"/>', '<input name="' + self.settings.uploadFileName + '" id="' + self.contextName + self.settings.uploadFileName + '" type="hidden" value="' + _uploadFileNameValue + '"/>', '<input name="' + self.settings.oldPath + '" id="' + self.contextName + self.settings.oldPath + '" type="hidden" value="' + _oldPathValHtml + '"/>', '<input name="' + self.settings.picturePath + '" id="' + self.contextName + self.settings.picturePath + '" type="hidden" value="' + _picturePathValHtml + '"/>', '<input name="' + self.settings.pictureSize + '" id="' + self.contextName + self.settings.pictureSize + '" type="hidden" value="' + _pictureSizeValHtml + '"/>', '<input name="isUploaded" id="' + self.contextName + 'isUploaded" type="hidden" value="' + self.isUploaded + '"/>', '</div>', ''].join("");
			divObj.html(divHtml);
			$("#" + self.delFileButtonId).click(function() {
				self.delAllFile();
			});
			self.bindFileEnvent();
			//			$("#"+self.biddingFileId).children('a').click( function () {
			//				// 每个链接下载
			//				self.handleEvent('downFile', $(this));
			//			});
			//			$("#"+self.biddingFileId).children('span').click( function () {
			//				// 每个链接删除.删除各个参数里的文件,那么这时候删除拼接的字符串,不好操作,那么就将所有的参数不保存到页面,保存到内存中,放入数组/MAP
			//				delMultipleFile($(this));
			//			});
			return divHtml;
		},
		handleEvent: function(handleName, params) {
			var fp = this.filePath;
			if (handleName && handleName == "downFile") {
				this.queueEvent(handleName, [params.attr("rname"), fp, params.attr("fname")]);
			} else {
				if (!params) {
					params = [];
				}
				this.queueEvent(handleName, params);
			}
		},
		delAllFile: function() {
			// 删除了所有文件
			// save 旧文件路径,用来删除旧文件
			var picturePath = this.picturePathValArr.join(UN_SWFUpload.SPLITE);
			// 提交到后台的参数清空
			this.fileIdValArr = [];
			this.uploadFileNameValArr = [];
			this.picturePathValArr = [];
			this.pictureSizeValArr = [];
			// reset input value
			this.refreshFormData();

			$("#" + this.biddingFileId).html("");
			$("#" + this.biddingFileId).html("");
			$("#" + this.delFileButtonId).html("");
			this.SWF_SELECT_FILE_NAME = '';
			this.fileOrder = 1;
			if (picturePath != '') {
				// 删除临时路径的文件
				this.delFile(picturePath);
			}
		},
		delMultipleFile: function(clickObj) {
			// 多选删除一个文件
			var swfu = this;
			var _index = $.inArray(clickObj.prev().attr('rname'), swfu.picturePathValArr);
			if (_index >= 0) {
				var _tempPath = swfu.picturePathValArr[_index];
				// 删除这个文件
				swfu.fileIdValArr.splice(_index, 1);
				swfu.uploadFileNameValArr.splice(_index, 1);
				swfu.picturePathValArr.splice(_index, 1);
				swfu.pictureSizeValArr.splice(_index, 1);
				swfu.fileOrder = swfu.uploadFileNameValArr.length + 1;
				// reset input value
				this.refreshFormData();
				var pa = clickObj.prev();
				clickObj.remove();
				pa.remove();
				if (swfu.uploadFileNameValArr.length == 0) {
					$("#" + swfu.delFileButtonId).html("");
				} else {
					// 重新显示文件名并且绑定事件
					swfu.getUploadFileNameHtml();
				}
				// 删除临时路径的文件
				if (_tempPath != '') {
					swfu.delFile(_tempPath);
				}
			}
		},
		delFile: function (serverData) {
			// serverData为上传时服务器返回的数据
			this.handleEvent("delFile", serverData);
		},
		getInitUploadFileNameHtml: function() {
			var swfu = this;
			// 初始化显示文件html
			var bl = swfu.uploadFileNameValArr.length;
			if (bl > 0) {
				var _orderHtml = swfu.settings.multiple ? '[{0}]': '';
				var _uploadFileNameHtmlArr = [];
				$.each(swfu.uploadFileNameValArr,
				function(i, v) {
					if(v != '') {
						if (i != bl - 1) {
							_uploadFileNameHtmlArr.push('<a href="javascript:void(0);" rname="' + swfu.picturePathValArr[i] + '" fname="' + v + '">' + _orderHtml.format(i + 1) + ' ' + v + '</a> <span id="' + i + 'delMultipleBtn" class="delMultipleBtn"><a href="javascript:void(0);">删 除</a></span><br/>');
						} else {
							_uploadFileNameHtmlArr.push('<a href="javascript:void(0);" rname="' + swfu.picturePathValArr[i] + '" fname="' + v + '">' + _orderHtml.format(i + 1) + ' ' + v + '</a> <span id="' + i + 'delMultipleBtn" class="delMultipleBtn"><a href="javascript:void(0);">删 除</a></span>');
						}
					}
				});
				return _uploadFileNameHtmlArr.join('');
			} else {
				return '';
			}
		},
		getUploadFileNameHtml: function() {
			// 上传后显示文件html
			var swfu = this;
			var bl = swfu.uploadFileNameValArr.length;
			var _uploadFileNameHtmlArr = [];
			var _orderHtml = swfu.settings.multiple ? '[{0}]': '';
			$.each(swfu.uploadFileNameValArr,
			function(i, v) {
				if (v != "") {
					if (i != bl - 1) {
						_uploadFileNameHtmlArr.push('<a href="javascript:void(0);" rname="' + swfu.picturePathValArr[i] + '" fname="' + v + '">' + _orderHtml.format((i + 1)) + ' ' + v + '</a> <span id="' + i + 'delMultipleBtn" class="delMultipleBtn"><a href="javascript:void(0);">删 除</a></span><br/>');
					} else {
						_uploadFileNameHtmlArr.push('<a href="javascript:void(0);" rname="' + swfu.picturePathValArr[i] + '" fname="' + v + '">' + _orderHtml.format((i + 1)) + ' ' + v + '</a> <span id="' + i + 'delMultipleBtn" class="delMultipleBtn"><a href="javascript:void(0);">删 除</a></span>');
					}
				}
			});
			var _html = _uploadFileNameHtmlArr.join('');
			$("#" + swfu.biddingFileId).html(_html);
			swfu.bindFileEnvent();
			return _html;
		},
		bindFileEnvent: function() {
			// self swfu绑定下载/删除事件
			var self = this;
			$("#" + self.biddingFileId).children('a').click(function() {
				// 每个链接下载
				self.handleEvent('downFile', $(this));
			});
			$("#" + self.biddingFileId).children('span').click(function() {
				// 每个链接删除.删除各个参数里的文件,那么这时候删除拼接的字符串,不好操作,那么就将所有的参数不保存到页面,保存到内存中,放入数组/MAP
				self.delMultipleFile($(this));
			});
		},
		queueEvent: function(handlerName, argumentArray) {
			var self = this;
			// 加入队列事件
			//			window.open("../upload/download.action?fileUrl=" + $("#"+this.settings.picturePathVal).val());
			if (argumentArray == undefined) {
				argumentArray = [];
			} else if (! (argumentArray instanceof Array)) {
				argumentArray = [argumentArray];
			}
			if (typeof self.settings[handlerName] === "function") {
				// Queue the event
				this.eventQueue.push(function() {
					this.settings[handlerName].apply(this, argumentArray);
				});
				// Execute the next queued event
				setTimeout(function() {
					self.executeNextEvent();
				},
				0);

			} else if (self.settings[handlerName] !== null) {
				alert(handlerName + '方法未定义.');
				throw "Event handler '" + handlerName + "' is unknown or is not a function";
			}
		},
		executeNextEvent: function() {
			var f = this.eventQueue ? this.eventQueue.shift() : null;
			if (typeof(f) === "function") {
				f.apply(this);
			}
		},
		addToList: function(swfuName, swfuObj) {
			// 属性名 = 属性值
			UN_SWFUpload.add(swfuName, swfuObj);
			UN_SWFUpload.swfuList.push(swfuObj);
		},
		hide: function() {
			// 隐藏div
			$("#" + this.contextName).hide();
		},
		show: function() {
			// 显示div
			$("#" + this.contextName).show();
		},
		getSwfu: function() {
			return this.swfuObject;
		},
		refreshFormData: function() {
			this.fileIdValArr && this.fileIdValArr.length > 0 ? this.setFileId(this.fileIdValArr.join(UN_SWFUpload.SPLITE)) : this.setFileId('');
			this.uploadFileNameValArr && this.uploadFileNameValArr.length > 0 ? this.setUploadFileName(this.uploadFileNameValArr.join(UN_SWFUpload.SPLITE)) : this.setUploadFileName('');
			this.picturePathValArr && this.picturePathValArr.length > 0 ? this.setPicturePath(this.picturePathValArr.join(UN_SWFUpload.SPLITE)) : this.setPicturePath('');
			this.pictureSizeValArr && this.pictureSizeValArr.length > 0 ? this.setPictureSize(this.pictureSizeValArr.join(UN_SWFUpload.SPLITE)) : this.setPictureSize('');
			this.setIsUploaded(this.isUploaded);
		},
		setFileId: function(val) {
			$("#" + this.contextName + this.settings.fileId).val(val);
		},
		setUploadFileName: function(val) {
			$("#" + this.contextName + this.settings.uploadFileName).val(val);
		},
		setPicturePath: function(val) {
			$("#" + this.contextName + this.settings.picturePath).val(val);
		},
		setPictureSize: function(val) {
			$("#" + this.contextName + this.settings.pictureSize).val(val);
		},
		setIsUploaded: function(val) {
			$("#" + this.contextName + 'isUploaded').val(val);
		},
		destroy: function() {
			if (!this.isUploding) {
				this.delAllFile();
				this.swfuObject.destroy();
				$("#" + this.prefixName).html("");
			} else {
				alert('文件正在上传中,请稍候操作.');
				return;
			}
		},
		cancle: function() {
			this.swfuObject.cancelQueue();
		},
		uploadCompleteTip: function(content, title) {
			return art.dialog.succeed({
				//					id:'uploadCompleteTip',
				//					title:title?title:'消息',
				//					content: content,
				//					icon: 'succeed',
				//					fixed: true,
				//					resize: false,
				//					drag: true	,
				//					width:'200',
				//					esc:false,
				//					yesFn:function (){
				//						return ;
				//					}
			}).content(content);
		},
		getSplitePostion: function(str, sIndex, splite, count) {
			/*
			 * str 从sIndex开始到splite第count出现的位置 之间的位置
			 * 超过最大出现次数,返回最后一次出现的位置
			 * substring包括开始,不包括结束
			 */
			if (!str) {
				return - 1;
			}
			// count不能超过总次数
			var tsrc = str.substring(sIndex);
			var acount = this.getCountInstances(tsrc, splite);
			if (count > acount) {
				// 超过返回最后一次出现的次数
				return this.getSplitePostion(tsrc, 0, splite, acount);
			}
			// str: 是你的原字符串
			// splite: 是你的要找的字符串
			// count: 寻找的次数
			var re = new RegExp(splite, "g");
			while (count--) {
				re.test(tsrc);
			}
			var pos = re.lastIndex - splite.length;
			if (pos < 0) return - 1;
			else return pos;
		},
		getSplitStr: function(str, sIndex, splite, count) {
			if (!str) {
				return '';
			}
			/*
			 * str 从sIndex开始到splite第count出现的位置 之间的 的字符串
			 * substring包括开始,不包括结束
			 */
			var pos = this.getSplitePostion(str, sIndex, splite, count);
			if (pos < 0) {
				// 没有找到,返回str
				return str;
			} else {
				return str.substring(sIndex, pos);
			}

		},
		getCountInstances: function(mainStr, subStr) {
			if (!mainStr) {
				return 0;
			}
			// 字符串在mainstr中出现的次数
			var count = 0;
			var offset = 0;
			do {
				offset = mainStr.indexOf(subStr, offset);
				if (offset != -1) {
					count++;
					offset += subStr.length;
				}
			} while ( offset != - 1 ) return count;
		},
		getLastSplitStr: function(str, split) {
			if (!str) {
				return '';
			}
			// 字符串split在源str最后出现的位置 之间的str
			return this.getSplitStr(str, 0, split, this.getCountInstances(str, split));
		},
		eachArrToString: function(arr, joinStr) {
			var str = '';
			$.each(arr,
			function(i, v) {
				str += str + joinStr;
			});
			return str;
		},
		getPostData: function() {
			// 获取提交参数
			var self = this;
			self.refreshFormData();
			var postArr = ['multiple' + '=' + self.settings.multiple, self.settings.businessId + '=' + self.settings.businessIdVal, self.settings.fileId + '=' + self.fileIdValArr.join(UN_SWFUpload.SPLITE), self.settings.appendixId + '=' + self.appendixIdValArr.join(UN_SWFUpload.SPLITE), self.settings.uploadFileName + '=' + self.uploadFileNameValArr.join(UN_SWFUpload.SPLITE), self.settings.oldPath + '=' + self.oldPathValArr.join(UN_SWFUpload.SPLITE), self.settings.picturePath + '=' + self.picturePathValArr.join(UN_SWFUpload.SPLITE), self.settings.pictureSize + '=' + self.pictureSizeValArr.join(UN_SWFUpload.SPLITE), 'isUploaded' + '=' + self.isUploaded];
			return encodeURIComponent(postArr.join('&'));
		},
		getUploadTips: function(content, title) {
			return art.dialog({
				id: '_uploadTips',
				title: title ? title: '',
				width: 300,
				content: content,
				fixed: true,
				resize: false,
				drag: true,
				yesFn: false,
				noFn: false,
				esc: false
				//				,
				//				button: [
				//				         {
				//				             name: '确定',
				//				             disabled: true
				//				         }
				//				     ]
			});
		}
	};

})(jQuery);
基于jquery,artDialog,swfupload 的上传插件1.1.1 2013年12月12日, AM 11:30:27
//document.write("<script language=\"javascript\" src='..\/js\/j.js' > <\/script>");
var SRM_SWFUpload = SRM_SWFUpload || {};
SRM_SWFUpload.SPLITE = ':';
SRM_SWFUpload.ART_DIALOG_VER = art.dialog.fn.version;
(function($){
    $.fn.swfuInit= function(settings){
        //默认参数
        var defaultSettings = {
    		// 附件ID,submit to server
    		appendixId:'appendixId',
    		// 附件源文件名,
    		uploadFileName:'uploadFileName',
    		// 附件重命名后 文件名
    		oldPath:'oldPath',
    		// 上传文件时 的临时路径
    		picturePath:'picturePath',
    		// 上传文件的大小 单位:字节
    		pictureSize:'pictureSize',
        	// 附件ID,submit to server
        	appendixIdVal:'',
        	// 附件源文件名,
        	uploadFileNameVal:'',
        	// 附件重命名后 文件名
        	oldPathVal:'',
        	// 上传文件时 的临时路径
        	picturePathVal:'',
        	// 上传文件的大小 单位:字节
        	pictureSizeVal:'',
        	// 上传按钮后的描述信息
        	descInfo:'点击此按钮可上传小于100M的附件',
        	// 文件的存放路径
        	filePath : '',
        	// 是否多选
        	multiple:true,
        	// 提交文件域的参数名称
        	filePostName:'uploadFile', 
        	// 允许上传文件的类型,以 ; 分割,*.jpg;*.doc
        	fileTyps:'*.*',
        	fileTypesDesc : 'All File', 
        	// 默认单位是KB
            fileSizeLimit : "100 MB",  
            fileUploadLimit : 1000,      
            fileQueueLimit : 0,
            postParams : {},
            downFile:function (url, filePath) {
            	// 下载temp文件
            	if (!filePath || filePath == '') {
            		if (url && url.indexOf(SRM_SWFUpload.SPLITE) >= 0) {
            			var urlArr = url.split(SRM_SWFUpload.SPLITE);
            			for(var i = 0;i < urlArr.length; i++){
            				window.open("../upload/download.action?fileUrl=" + urlArr[i]);
            			}
            		} else {
            			window.open("../upload/download.action?fileUrl=" + url);
            		}
            	} else {
            		if (url && url.indexOf(SRM_SWFUpload.SPLITE) >= 0) {
            			var urlArr = url.split(SRM_SWFUpload.SPLITE);
            			for(var i = 0;i < urlArr.length; i++){
            				window.open("../upload/download.action?fileUrl=" + urlArr[i] +"&filePath=" + filePath)
            			}
            		} else {
            			window.open("../upload/download.action?fileUrl=" + url +"&filePath=" + filePath)
            		}
            	}
            },
            showTip : false,
            showPercent : false
        };
        /* 合并默认参数和用户自定义参数 */
        settings = $.extend(defaultSettings, settings);
        var _swfu ;
        this.each(function(){
        	// 方法体	
        	var elem = $(this);
        	if (!elem) {
        		return ;
        	}
        	_swfu = new SRMSWFU(elem, settings);
        	_swfu.generate();
        });
        return _swfu;
    };
    /*
     * 私有函数
     */
    function SRMSWFU(elem, settings) {
		this.settings = settings;
		// 下载文件的保存路径
		this.filePath = settings.filePath,
		this.uploadDiv = elem;
		this.prefixName = elem.attr("id");
		this.prefixIndex = SRM_SWFUpload.movieCount++;
		this.contextName = elem.attr("id");
		this.progressTarget = elem.attr("id") + "fsUploadProgress";
		this.cancelButtonId = elem.attr("id") + "btnCancel";
		this.buttonId = elem.attr("id") + "spanButtonPlaceHolder";
		this.divStatusId = elem.attr("id") + "divStatus";
		this.biddingFileId = elem.attr("id") + "biddingFile";
		this.delFileButtonId = elem.attr("id") + "delFileButton";
		this.filePostName = settings.filePostName ? settings.filePostName : "uploadFile";
		this.postParams = settings.postParams;
		this.SWF_SELECT_FILE_NAME = "";
		this.swfuObject = {};
		// 事件队列
		this.eventQueue = [];
		this.selectFileCount = 0;
	};
	
	SRMSWFU.prototype = {
		generate : function() {
			var self = this; 
			//	初始化调用SWFUpload对象初始化
			if (self.uploadDiv) {
				self.uploadDiv.html("");
			}
			var htmls = self.generateHTML(self.uploadDiv);
			var upObjId = self.prefixName;
			var _swfSet = {
					file_types : self.settings.fileTyps,   
		        	file_types_description : self.settings.fileTypesDesc,  
		            file_size_limit : self.settings.fileSizeLimit,  
		            // 最多上传文件数量
		            file_upload_limit : self.settings.fileUploadLimit,
		            // 队列文件数量
		            file_queue_limit : self.settings.fileQueueLimit,
		            debug: false, 
		            // Button settings
		            // 单选OR多选
		            button_action : self.settings.multiple ? SWFUpload.BUTTON_ACTION.SELECT_FILES : SWFUpload.BUTTON_ACTION.SELECT_FILE,
		            button_image_url: "../images/swf_btn_bg.gif",   
		            button_width: "76",   
		            button_height: "26",   
		            button_text: "<span class='theFont'>上传</span>",   
		            button_text_style: ".theFont { font-size: 11;font-weight:bold;text-align:center; color:#323d1f;background-color:transparent; }",   
		            button_text_left_padding: 1,   
		            button_text_top_padding: 4 , 
		            flash_url : "../js/SWFUpload/swfupload.swf",   
		            upload_url: "../upload/upload.action",   
		            // file_dialog_start_handler : fileDialogStart, 
		            file_post_name:self.filePostName, 
					custom_settings : {   
		                progressTarget : self.progressTarget,   
		                cancelButtonId : self.cancelButtonId
		                
		            }, 
		            button_cursor: SWFUpload.CURSOR.HAND,
		            post_params : self.postParams,
		            button_placeholder_id:self.buttonId,
		            file_dialog_complete_handler : function (numFilesSelected, numFilesQueued){
	    			    if (numFilesSelected > 0 && numFilesQueued > 0) {   
	    			        var dialog = art.dialog.confirm("确认要上传已选的 "+numFilesQueued+" 个文件吗?",function(){
	    		                try {
	    		                	self.selectFileCount = numFilesQueued;
	    		                	self.swfuObject.startUpload();
	    		                } catch (ex) {   
	    		                    dialog.close();   
	    		                }   
	    		            },function(){
	    		            	// 取消了队列
	    		            	self.swfuObject.cancelQueue();   
	    		            });   
	    			    }   
	    			},
	    			// 选中文件后确定后执行
	                file_queued_handler : function (file) {
	    				// 当文件选择对话框关闭消失时,如果选择的文件成功加入上传队列,那么针对每个成功加入的文件都会触发一次该事件(N个文件成功加入队列,就触发N次此事件)。
	    				this.customSettings.queue = this.customSettings.queue || new Array();
//	    		        while (this.customSettings.queue.length > 0) {
//	    		            this.cancelUpload(this.customSettings.queue.pop(), false);
//	    		        }
	    		        this.customSettings.queue.push(file.id);
	    				self.SWF_SELECT_FILE_NAME = self.SWF_SELECT_FILE_NAME + file.name + SRM_SWFUpload.SPLITE ;   
	    			},
	    			file_queue_error_handler : function (file, errorCode, message) {
	    				// this 已经是swfupload对象
	    			    try {   
	    			        if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {   
//	    			            art.dialog.alert("文件队列已满,最多可上传 "+this.settings.file_upload_limit+" 个文件.");   
	    			            art.dialog.alert("一次最多能选择  "+this.settings.file_queue_limit+" 个文件.");   
	    			            return;   
	    			        }   
	    			        var progress = new FileProgress(file, this.customSettings.progressTarget);   
	    			        progress.setError();   
	    			        progress.toggleCancel(false);   
	    			        switch (errorCode) {   
		    			        case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:    
		    			            progress.setStatus("File is too big.");   
		    			            art.dialog.alert("文件:" + file.name + " 过大,请选择"+this.settings.file_size_limit+"以内的文件进行上传.");   
		    			            //this.debug("Error Code: File too big, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
		    			            break;   
		    			        case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:   
		    			            progress.setStatus("Cannot upload Zero Byte files.");   
		    			            art.dialog.alert("请选择大于0KB,小于"+this.settings.file_size_limit+"的文件进行上传.");   
		    			            //this.debug("Error Code: Zero byte file, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
		    			            break;   
		    			        case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:   
		    			            progress.setStatus("Invalid File Type.");   
		    			            art.dialog.alert("请选择类型为 "+this.settings.file_types_description+" 的文件进行上传.");   
		    			            //this.debug("Error Code: Invalid File Type, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
		    			            break;   
		    			        default:   
		    			            if (file !== null) {   
		    			                progress.setStatus("Unhandled Error");   
		    			            }   
		    			            //this.debug("Error Code: " + errorCode + ", File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
		    			            break;   
	    			        }   
	    			    } catch (ex) {   
//	    			        this.debug(ex);   
	    			        art.dialog.error("上传文件失败,请刷新页面后重试.");   
	    			    }   
	    			},   
	                upload_start_handler : function (file) {
	    				try {
	    					//完成上传前的最后验证以及其他你需要的操作,例如添加、修改、删除post数据等。
	    					var progress = new FileProgress(file, this.customSettings.progressTarget);
	    					progress.setStatus("Uploading...");
	    					progress.toggleCancel(true, this);
	    					if (self.settings.showTip) {
	    						self.settings.showPercent = false;
                                if (!SRM_SWFUpload.uploadTip) {   
                                    SRM_SWFUpload.uploadTip = //art.dialog.tips('正在上传文件 '+file.name+' ,请稍等...', 60);   
                                        self.uploadTips('正在上传文件 '+file.name+' ,请稍等...');   
                                } else {   
                                    SRM_SWFUpload.uploadTip.content('正在上传文件 '+file.name+' ,请稍等...').title('上传中...').show();   
                                }   
                            } 
	    				} catch (ex) {
	    					
	    				}
	    				return true;
	    			},   
//	                upload_progress_handler : function (file, bytesLoaded, bytesTotal) {
//						try {
//							var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
//							var progress = new FileProgress(file, this.customSettings.progressTarget);
//							progress.setProgress(percent);
//							progress.setStatus("Uploading...");
//							$(document.body).prepend(percent);
//						} catch (ex) {
//							this.debug(ex);
//						}
//	    			},    
	                upload_error_handler : function (file, errorCode, message) {
	    		        var progress = new FileProgress(file, this.customSettings.progressTarget);   
	    		        progress.setError();   
	    		        progress.toggleCancel(false);   
	    		        switch (errorCode) {   
	    			        case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:   
	    			            progress.setStatus("Upload Error: " + message);   
	    			            art.dialog.alert("文件 " + file.name + " 上传失败. 网络错误."+message);   
	    			            break;   
	    			        case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:   
	    			            progress.setStatus("Upload Failed.");   
	    			            this.debug("文件 " + file.name + " 尺寸过大. " + file.size + ", 请重新选择."+message);   
	    			            break;   
	    			        case SWFUpload.UPLOAD_ERROR.IO_ERROR:   
	    			            progress.setStatus("Server (IO) Error");   
	    			            art.dialog.alert("Error Code: IO Error, File name: " + file.name + ", Message: " + message);   
	    			            break;   
	    			        case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:   
	    			            progress.setStatus("Security Error");   
	    			            art.dialog.alert("Error Code: Security Error, File name: " + file.name + ", Message: " + message);   
	    			            break;   
	    			        case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:   
	    			            progress.setStatus("Upload limit exceeded.");   
	    			            art.dialog.alert("文件队列已满,文件 " + file.name + " 上传失败. " + message);   
	    			            break;   
	    			        case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:   
	    			            progress.setStatus("Failed Validation.  Upload skipped.");   
	    			            art.dialog.alert("Error Code: File Validation Failed, File name: " + file.name + ", File size: " + file.size + ", Message: " + message);   
	    			            break;   
	    			        case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:   
	    			            // If there aren't any files left (they were all cancelled) disable the cancel button   
	    			            if (this.getStats().files_queued === 0) {   
	    			                document.getElementById(this.customSettings.cancelButtonId).disabled = true;   
	    			            }   
	    			            progress.setStatus("Cancelled");   
	    			            progress.setCancelled();   
	    			            break;   
	    			        case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:   
	    			            progress.setStatus("Stopped");   
	    			            break;   
	    			        default:   
	    			            progress.setStatus("Unhandled Error: " + errorCode);   
	    			            art.dialog.alert("未知错误,错误代码  " + errorCode + ", 文件 " + file.name + ", File size: " + file.size + ", Message: " + message);   
	    			            break;   
	    		        }   
	    			},   
	                upload_success_handler : function (file, serverData) {   
	    				/*
	    				 * 注意不能
		    			 * this.cancelUpload();
		    			 * 不然导致
		    			 * 一个上传完成(发送file信息,并返回200状态时调用此方法)后,
		    			 * 取消只会取消当前文件的上传,而不是取消整个队列上传,所以每隔一个就会被取消
		    			 * 这个upload_success_handler每个文件上传完成都会调用一次,一个文件上传周期没有完成,还会触发upload_complete_handler;uploadComplete(file)
		    			 * 
	    				 */
	    				if (serverData != null && serverData != ""){
	    					try {
	    						file.id = "singlefile";    
	    						var progress = new FileProgress(file, this.customSettings.progressTarget);   
	    						progress.setComplete();   
	    						progress.setStatus("Complete.");   
	    						progress.toggleCancel(false);
	    						debugger;
	    						var _uploadFileName = $("#"+self.contextName+self.settings.uploadFileName);
	    						var _picturePath = $("#"+self.contextName+self.settings.picturePath);
	    						var _pictureSize = $("#"+self.contextName+self.settings.pictureSize);
	    						_uploadFileName.val(self.SWF_SELECT_FILE_NAME);
	    						if(self.settings.multiple) {
	    							var _picturePathVal = _picturePath.val().indexOf(SRM_SWFUpload.SPLITE) <= 0 ? _picturePath.val() + SRM_SWFUpload.SPLITE : _picturePath.val();
	    							if (_picturePathVal != "") {
	    								_picturePath.val(_picturePathVal + serverData + SRM_SWFUpload.SPLITE);
	    							} else {
	    								_picturePath.val(_picturePath.val() + serverData + SRM_SWFUpload.SPLITE);
	    							}
	    							_pictureSize.val(_pictureSize.val() + file.size + SRM_SWFUpload.SPLITE);
	    						} else {
	    							_picturePath.val(serverData);
	    							_pictureSize.val(file.size);
	    						}
	    						
	    						// 全部上传完成后显示文件名称
//	    						var _biddingFileId = $("#"+self.biddingFileId);
//	    						_biddingFileId.append(file.name + SRM_SWFUpload.SPLITE);
	    						if (self.settings.showPercent) {
		    						/* 
		    		            	 * 计算上传进度,总数量selectFileCount
		    		            	 */
		        		    		var percent = Math.ceil(((self.selectFileCount - this.getStats().files_queued) / self.selectFileCount) * 100);
		    						if (!SRM_SWFUpload.uploadTip) {
		    							//art.dialog.tips('正在上传文件 '+file.name+' ,请稍等...', 60);
		    							SRM_SWFUpload.uploadTip = self.uploadTips(percent+' %');
		    						} else {
		    							SRM_SWFUpload.uploadTip.content(percent+' %').show();
		    						}
		    					}
	    					} catch (e) { 
	    						alert("upload_success_handler"+e);
	    					}   
	    				}
	    		    },
	                upload_complete_handler : function (file) {
	    		    	//("上传完成");,不一定是上传成功
	    		    	if (this.getStats().files_queued === 0) {
	    		    		// 队列文件全部上传完成
	    		    		document.getElementById(this.customSettings.cancelButtonId).disabled = true;
	    		    		var _uploadFileName = $("#"+self.contextName+self.settings.uploadFileName);
	    		    		_uploadFileName.val(self.getLastSplitStr(_uploadFileName.val(), SRM_SWFUpload.SPLITE));
	    		    		var _picturePath = $("#"+self.contextName+self.settings.picturePath);
	    		    		_picturePath.val(self.getLastSplitStr(_picturePath.val(), SRM_SWFUpload.SPLITE));
	    		    		var _pictureSize = $("#"+self.contextName+self.settings.pictureSize);
	    		    		_pictureSize.val(self.getLastSplitStr(_pictureSize.val(), SRM_SWFUpload.SPLITE));
	    		    		var _biddingFileId = $("#"+self.biddingFileId);
	    		    		_biddingFileId.html(self.getLastSplitStr(self.SWF_SELECT_FILE_NAME, SRM_SWFUpload.SPLITE).split(SRM_SWFUpload.SPLITE).join('<br/>'));
	    		    		$("#"+self.delFileButtonId).html("删除");
	    		    		self.SWF_SELECT_FILE_NAME = '';
	    		    		// 判断队列没有文件,关闭上传tip
	    		    		if (self.settings.showTip || self.settings.showPercent) {
	    		    			if (SRM_SWFUpload.uploadTip){
	    		    				//SRM_SWFUpload.uploadTip.content('上传完成.');
	    		    				SRM_SWFUpload.uploadTip.title('完成');
	    		    				SRM_SWFUpload.uploadTip.hide();
//    		    					SRM_SWFUpload.uploadTip.button(
//    		    					    {
//    		    					        name: '确定',
//    		    					        callback: function () {
//    		    					           this.hide();
//    		    					        },
//    		    					        disabled: false
//    		    					    }
//    		    					)
	    		    				//self.uploadCompleteTip('上传完成.');
	    		    			}
	    		    		}
	    		    	}
	    		    },
	    		    swfupload_loaded_handler: function () {
	    		    	// ready
	    		    }
			};
			this.swfuObject = new SWFUpload(_swfSet);
			this.addToList(this.prefixName, this.swfuObject); 
		},
		generateHTML : function (divObj){
			var self = this;
			var delFileButtonHtml = '<a style="padding-left:10px;" href="javascript:void(0);" id="'+this.delFileButtonId+'"></a> ';
			if (this.settings.uploadFileNameVal != "") {
				delFileButtonHtml = '<a style="padding-left:10px;" href="javascript:void(0);" id="'+this.delFileButtonId+'">删除</a> ';
			}
			var divHtml = [
	           	// fsUploadProgress
		           '<div style="display:none;" id="'+this.progressTarget+'" ></div>',
		           '<div style="display:none;" id="'+this.divStatusId+'divStatus" ></div>',
		           '<div style="height:28px;">',
		           		'<div style="float:left;padding-top:5px">',
		           			'<a href="javascript:void(0);">',
		           				'<span id="'+this.biddingFileId+'">'+this.settings.uploadFileNameVal+'</span>',
		       				'</a>',
		       				delFileButtonHtml,
		   				'</div>',
		   				'<div style="" id="'+this.buttonId+'"></div>',
		   				'<input id="'+this.cancelButtonId+'" type="button" value="Cancel All Uploads" disabled="disabled" style="display:none;"/>',
		   				'<span id="'+this.prefixName+'desc">'+this.settings.descInfo+'</span>',
		   				// 五个隐藏域
		   				'<input name="'+this.settings.appendixId+'" id="'+this.contextName+this.settings.appendixId+'" type="hidden" value="'+this.settings.appendixIdVal+'"/>',
						'<input name="'+this.settings.uploadFileName+'" id="'+this.contextName+this.settings.uploadFileName+'" type="hidden" value="'+this.settings.uploadFileNameVal+'"/>',
						'<input name="'+this.settings.oldPath+'" id="'+this.contextName+this.settings.oldPath+'" type="hidden" value="'+this.settings.oldPathVal+'"/>',
						'<input name="'+this.settings.picturePath+'" id="'+this.contextName+this.settings.picturePath+'" type="hidden" value="'+this.settings.picturePathVal+'"/>',
						'<input name="'+this.settings.pictureSize+'" id="'+this.contextName+this.settings.pictureSize+'" type="hidden" value="'+this.settings.pictureSizeVal+'"/>',
						'<input name="multiple" id="'+this.contextName+'multiple" value="'+this.settings.multiple+'" type="hidden"/>',
					'</div>',
		            ''].join("");
			divObj.html(divHtml);
			$("#"+self.biddingFileId).parent().click( function () {
				self.downFile('downFile');
			});
			$("#"+self.delFileButtonId).click( function () {
				self.delFile('del_file');
			});
			return divHtml;
		},
		downFile:function (handleName) {
			var fp = this.filePath;
			this.queueEvent(handleName, [$("#"+this.contextName+this.settings.picturePath).val() ,fp]);
		},
		delFile:function (handleName, id) {
//			this.queueEvent(handleName, id);
				var picturePath = $("#"+this.contextName+this.settings.picturePath).val();
            	// del临时文件
            	$("#"+this.biddingFileId).html("");
            	$("#"+this.contextName+this.settings.uploadFileName).val("");
				$("#"+this.contextName+this.settings.picturePath).val("");
				$("#"+this.contextName+this.settings.pictureSize).val("");
				$("#"+this.biddingFileId).html("");
				$("#"+this.delFileButtonId).html("");
				// 删除临时路径的文件
				$.ajax({
					url:'../upload/delTempFile.action',
					type : "POST",
					data:{'fileUrl':picturePath},
					timeout : 120000,
					cache : false,
					success:function (data) {
						try {
							//var json = $.parseJSON(data);
							
						} catch (e) {
						}
						
					},
					error:function(){
						
					}
				});
		},
		queueEvent:function (handlerName, argumentArray) {
			// 加入队列事件
//			window.open("../upload/download.action?fileUrl=" + $("#"+this.settings.picturePathVal).val());
			if (argumentArray == undefined) {
				argumentArray = [];
			} else if (!(argumentArray instanceof Array)) {
				argumentArray = [argumentArray];
			}
			var self = this;
			if (typeof this.settings[handlerName] === "function") {
				// Queue the event
				this.eventQueue.push(function () {
					this.settings[handlerName].apply(this, argumentArray);
				});
				// Execute the next queued event
				setTimeout(function () {
					self.executeNextEvent();
				}, 0);
				
			} else if (this.settings[handlerName] !== null) {
				throw "Event handler '" + handlerName + "' is unknown or is not a function";
			}
		},
		executeNextEvent : function () {
			var f = this.eventQueue ? this.eventQueue.shift() : null;
			if (typeof(f) === "function") {
				f.apply(this);
			}
		},
		addToList:function (swfuName, swfuObj) {
			// 属性名 = 属性值
			return SRM_SWFUpload.uploadList[swfuName] = swfuObj;
		},
		getSwfu:function (swfId) {
			return this.swfuObject;
		},
		getAppendixId:function () {
			return $("#"+this.contextName+this.settings.appendixId).val();
		},
		getUploadFileName:function () {
			return $("#"+this.contextName+this.settings.uploadFileName).val();
		},
		getPicturePath:function () {
			return $("#"+this.contextName+this.settings.picturePath).val();
		},
		getPictureSize:function () {
			return $("#"+this.contextName+this.settings.pictureSize).val();
		},
		destroy : function() {
			this.swfuObject.destroy();
		},
		cancle : function() {
			this.swfuObject.cancelQueue();
		},
		uploadTips :function (content, title) {
			return art.dialog({
				title:title?title:'',
				minWidth:200,
				content: content,
				fixed: true,
				resize: false,
				drag: true	,
				yesFn:false,
				noFn:false,
				esc:false
//				,
//				button: [
//				         {
//				             name: '确定',
//				             disabled: true
//				         }
//				     ]
			});
		},
		uploadCompleteTip :function (content, title) {
			return art.dialog.succeed({
//					id:'uploadCompleteTip',
//					title:title?title:'消息',
//					content: content,
//					icon: 'succeed',
//					fixed: true,
//					resize: false,
//					drag: true	,
//					width:'200',
//					esc:false,
//					yesFn:function (){
//						return ;
//					}
			}).content(content);
		},
		getSplitePostion : function (str, sIndex, splite, count) {
			/*
			 * str 从sIndex开始到splite第count出现的位置 之间的位置
			 * 超过最大出现次数,返回最后一次出现的位置
			 * substring包括开始,不包括结束
			 */
			if(!str){
				return -1;
			}
			// count不能超过总次数
			var tsrc = str.substring(sIndex);
			var acount = this.getCountInstances(tsrc, splite);
			if (count > acount) {
				// 超过返回最后一次出现的次数
				return this.getSplitePostion(tsrc, 0, splite, acount);
			}
			// str: 是你的原字符串
			// splite: 是你的要找的字符串
			// count: 寻找的次数
			var re = new RegExp(splite,"g");
		    while(count--){
		        re.test(tsrc);
		    }
		    var pos = re.lastIndex-splite.length;
		    if (pos < 0)
				return -1;
			else
				return pos;
		},
		getSplitStr : function (str, sIndex, splite, count) {
			if(!str){
				return '';
			}
			/*
			 * str 从sIndex开始到splite第count出现的位置 之间的 的字符串
			 * substring包括开始,不包括结束
			 */
			var pos = this.getSplitePostion(str, sIndex, splite, count);
			if (pos < 0){
				// 没有找到,返回str
				return str;
			} else {
				return str.substring(sIndex, pos);
			}
			
		},
		getCountInstances : function (mainStr, subStr){
			if(!mainStr){
				return 0;
			}
			// 字符串在mainstr中出现的次数
	        var count = 0;
	        var offset = 0;
	        do {
	            offset = mainStr.indexOf(subStr, offset);
	            if(offset != -1)
	            {
	                count++;
	                offset += subStr.length;
	            }
	        } while(offset != -1)
	        return count;
	    },
	    getLastSplitStr : function (str, split) {
	    	if(!str){
				return '';
			}
	    	// 字符串split在源str最后出现的位置 之间的str
	    	return this.getSplitStr(str, 0, split, this.getCountInstances(str, split));
	    }
	};
	SRM_SWFUpload.movieCount = 0;
	SRM_SWFUpload.version = "1.1.1 2013-12-12";
	SRM_SWFUpload.uploadList = {};
	SRM_SWFUpload.uploadTip ;
    SRM_SWFUpload.add = function(n, o){
    	return SRM_SWFUpload.uploadList[n] = o;
    };
    SRM_SWFUpload.get = function (id) {
		return SRM_SWFUpload.uploadList[id];
	};
	SRM_SWFUpload.destroy = function(id) {
		if (!id || id == undefined || id == null || id == "") {
			for(var o in SRM_SWFUpload.uploadList){
				SRM_SWFUpload.uploadList[o].destroy();
				if (document.getElementById(o)) {
					document.getElementById(o).innerHTML = '';
				}
			}
		} else {
			SRM_SWFUpload.uploadList[id].destroy();
			if (document.getElementById(id)) {
				document.getElementById(id).innerHTML = '';
			}
		}
	};
})(jQuery);
map按value的排序 Map按Value排序

import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
 


public class Test
{
public static void main(String[] args)
{
 
 Map<String,String> maps = new HashMap<String,String>();
	maps.put("3", "9王五"); 
    maps.put("1", "8张三");
    maps.put("2", "8李四");
    maps.put("4", "6赵六");
    maps = sortByValue(maps);
    Iterator it = maps.entrySet().iterator();

    while (it.hasNext()) {

    Map.Entry pairs = (Map.Entry) it.next();

    System.out.println(pairs.getValue());

    }
}
public static Map sortByValue(Map<String, String> map) {
    List list = new LinkedList(map.entrySet());
    Collections.sort(list, new Comparator(){
           public int compare(Object o1, Object o2) {
                     return ((Comparable) ((Map.Entry)o1).getValue())
                        .compareTo(((Map.Entry)o2).getValue());
           }
    });
    Map result = new LinkedHashMap();

    for (Iterator it = list.iterator(); it.hasNext();) {
          Map.Entry entry = (Map .Entry) it.next();
          result.put(entry.getKey(), entry.getValue());
    }
    return result;

}

public static Map sortByValue(Map map, final boolean reverse) {
        List list = new LinkedList(map.entrySet());
        Collections .sort(list, new Comparator() {
            public int compare(Object o1, Object o2) {
                if (reverse) {
                    return -((Comparable) ((Map .Entry)o1).getValue())
                            .compareTo(((Map .Entry)o2).getValue());
                }
                return ((Comparable) ((Map .Entry)o1).getValue())
                        .compareTo(((Map .Entry)o2).getValue());
            }
        });

        Map result = new LinkedHashMap();
        for (Iterator it = list.iterator(); it.hasNext();) {
            Map.Entry entry = (Map.Entry) it.next();
           result.put(entry.getKey(), entry.getValue());
        }
        return result;
}}
Global site tag (gtag.js) - Google Analytics