var swfu;
var fileUploadObject = {
paramesObject: {
url: "", //action地址
sessionId: "", //sessionid,用于防止在firefox中flash文件上传时session丢失
fileSizeLimit: "20", //最大可上传的文件大小 单位MB
fileTypes: "*.avi;*.pdf;*.rar;*.zip;*.jpg;*.gif;*.doc;*.docx;*.xls;*.xlsx;*.html;*.txt;*.ppt;*.pptx;*.tif", //可上传的文件类型
path: "/", //引用的文件跟flash上传控件的相对路径 uploadjs/.....
isAutoUpload: false, //是否启用自动上传,即选择文件后自动上传
fileQueueLimit: "0", //0表示不限制选中文件个数,其他表示一次只能上传几个文件
isShowDelBtn: true,//是否显示删除按钮
post_params: {}, //跟文件一起传送的参数 post的参数信息,格式:{"aaa":"aaa0","bbb":"bbb0"}
// Button settings
button_image_name: "uploadbg.jpg",//必填 图片高度应该是button高度的三倍,有三种不同样式
button_placeholder_id: "spanButtonPlaceholder",//必填
button_width: 82,//必填
button_height: 29,//必填
button_text: '<span class="button">添加文件</span>',//必填
button_text_style: '.button {color:#ffffff;background: #0874B2;text-align: center;}',//必填
button_text_top_padding: 6,//必填
button_text_left_padding: 3//必填
},
_files: new Array(),
//添加文件 最终返回的文件名
_addFiles: function (result, flashFileId) {
var isExist = false;
for (var i = 0; i < fileUploadObject._files.length; i++) {
if (fileUploadObject._files[i].fileName == result.fileName) {
isExist = true;
break;
}
}
if (isExist == false) {
result.flashFileId = flashFileId;
fileUploadObject._files.push(result);
}
return isExist;
},
_delFiles: function (flashFileId) {
for (var i = 0; i < fileUploadObject._files.length; i++) {
if (fileUploadObject._files[i].flashFileId == flashFileId) {
fileUploadObject._files.splice(i, 1);
break;
}
}
},
init: function (paramesObject) {
this.paramesObject = paramesObject;
this.paramesObject.scuessCount = 0; //当前已经成功的有多少个
this.paramesObject.cancelCount = 0; //当前正在上传的有多少个
this.paramesObject.failCount = 0; //当前上传失败的有多少个
var url = paramesObject.url.indexOf(".aspx") == -1 ? paramesObject.url + ";jsessionid=" + paramesObject.sessionId : paramesObject.url;
//传递其他参数
paramesObject.post_params.fileTypes = paramesObject.fileTypes;
paramesObject.post_params.fileSizeLimit = paramesObject.fileSizeLimit;
swfu = new SWFUpload({
// Backend Settings
upload_url: url,
post_params: paramesObject.post_params,//post参数
// File Upload Settings
file_size_limit: paramesObject.fileSizeLimit + " MB",
file_types: paramesObject.fileTypes, //"*.rar;*.zip;*.jpg;*.gif;*.doc;*.docx;*.xls;*.xlsx;*.html;*.txt",
file_types_description: "All Files",
file_upload_limit: "0", // Zero means unlimited
file_queue_limit: paramesObject.fileQueueLimit,
file_queue_error_handler: fileUploadObject.fileQueueError,
file_dialog_complete_handler: fileUploadObject.fileDialogComplete,
upload_progress_handler: fileUploadObject.uploadProgress,
upload_error_handler: fileUploadObject.uploadError,
upload_success_handler: fileUploadObject.uploadSuccess,
upload_complete_handler: fileUploadObject.uploadComplete,
file_queued_handler: fileUploadObject.filequeued,
// Button settings
button_image_url: paramesObject.path + "uploadjs/" + paramesObject.button_image_name,
button_placeholder_id: paramesObject.button_placeholder_id,
button_width: paramesObject.button_width,
button_height: paramesObject.button_height,
button_text: paramesObject.button_text,
button_text_style: paramesObject.button_text_style,
button_text_top_padding: paramesObject.button_text_top_padding,
button_text_left_padding: paramesObject.button_text_left_padding,
// Flash Settings
flash_url: paramesObject.path + "uploadjs/swfupload.swf", // Relative to this file
custom_settings: {
upload_target: "divFileProgressContainer"
},
// Debug Settings
debug: false
});
//载入文件进度窗口
fileUploadObject.initFileIntoWindow();
},
//文件选择时错误
fileQueueError: function (file, errorCode, message) {
try {
var errorName = "";
if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
errorName = "只能上传" + fileUploadObject.paramesObject.fileQueueLimit + "个文件,请重新选择!";
alert(errorName);
return;
}
switch (errorCode) {
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
errorName = "文件大小为0!";
break;
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
errorName = "文件大小不能超过" + fileUploadObject.paramesObject.fileSizeLimit + "MB,请重新上传!";
break;
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
errorName = "文件格式错误,请重新上传";
break;
default:
errorName = message;
break;
}
fileUploadObject.addFileInfoWindow(file, true, errorName);
} catch (ex) {
swfu.debug(ex);
}
},
//文件加入队列后
filequeued: function (file) {
//文件个数有限制的情况
if (parseInt(fileUploadObject.paramesObject.fileQueueLimit) != 0) {
fileUploadObject.paramesObject.scuessCount = 0; //当前已经成功的有多少个
fileUploadObject.paramesObject.cancelCount = 0; //当前正在上传的有多少个
$("div[id^='controll']").each(function () {
if ($(this).find("a").hasClass("delA") || $(this).html() == "") {
fileUploadObject.paramesObject.scuessCount++;
}
else if ($(this).find("a").hasClass("cancelA")) {
fileUploadObject.paramesObject.cancelCount++;
}
})
}
if (fileUploadObject.paramesObject.scuessCount + fileUploadObject.paramesObject.cancelCount >= parseInt(fileUploadObject.paramesObject.fileQueueLimit) && parseInt(fileUploadObject.paramesObject.fileQueueLimit) != 0) {
swfu.cancelUpload(file.id, true);
fileUploadObject.paramesObject.failCount++; //由于文件上传总数超过限制导致取消上传的文件数
} else {
fileUploadObject.addFileInfoWindow(file, false, "");
}
},
//启动上传
startUpload: function () {
if (swfu.getStats().files_queued > 0) {
swfu.startUpload();
}
},
//选择完文件后的事件
fileDialogComplete: function (numFilesSelected, numFilesQueued) {
if (fileUploadObject.paramesObject.failCount > 0) {
alert("只能上传" + fileUploadObject.paramesObject.fileQueueLimit + "个文件");
fileUploadObject.paramesObject.failCount = 0;
}
try {
if (swfu.getStats().files_queued > 0) {
//启用自动上传
if (fileUploadObject.paramesObject.isAutoUpload == true) {
swfu.startUpload();
}
}
} catch (ex) {
swfu.debug(ex);
}
},
//上传进度
uploadProgress: function (file, bytesLoaded, bytesTotal) {
try {
var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
$("#progress" + file.id).css("width", percent / 100 * 200).html(percent + "%");
$("#loadData" + file.id).html((bytesLoaded / 1024 / 1024).toFixed(2) + "MB");
$("#totalData" + file.id).html((bytesTotal / 1024 / 1024).toFixed(2) + "MB");
if (percent == 100) {
$("#status_" + file.id).html("文件加载完成,准备上传......");
}
} catch (ex) {
swfu.debug(ex);
}
},
//取消上传
cancelFun: function (FileID) {
swfu.cancelUpload(FileID, true);
fileUploadObject.resetProWinPosition(FileID);
},
//清除文件
clearFun: function (FileID) {
fileUploadObject.resetProWinPosition(FileID);
},
//保存成功后
uploadSuccess: function (file, serverData) {
var result = eval("(" + serverData + ")");
if ($("#numSpanBtn").hasClass("beforeStart")) {
$("#numSpanBtn").removeClass("beforeStart").text("0").css("color", "green");
}
var hasMsg=true;
if(result.msg==undefined||result.msg==""||result.msg==null){
hasMsg=false;
}
switch (result.resultCode) {
case "0000":
file.name = result.fileName;
if (fileUploadObject._addFiles(result, file.id) == false) {
if (hasMsg == false) {
$("#status_" + file.id).html("上传成功!");
} else {
$("#status_" + file.id).html(result.msg);
}
$("#div_" + file.id).addClass("success");
if (fileUploadObject.paramesObject.isShowDelBtn) {
$("#controll" + file.id).html("<a href=\"javascript:void(0);\" class=\"delA\" οnclick=\"fileUploadObject.delFun(\'" + file.name + "','" + file.id + "\')\">删除</a>");
}
else {
$("#controll" + file.id).html("");
}
} else {
$("#status_" + file.id).html("<font color=red>该附件已经存在!</font>");
}
$("#numSpanBtn").text(fileUploadObject._files.length);
break;
case "0001":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>该附件已经存在!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0002":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>上传失败!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0003":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>上传格式不正确!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0004":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>您未登录,请重新登录!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0005":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>缺少文件格式限制!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0006":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>缺少文件限制大小参数!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0007":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>文件过大,请重新上传!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
default:
if(hasMsg==false){
$("#status_" + file.id).html("其他错误");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
}
if (result.resultCode != "0000") {
$("$controll" + file.id).html("<a href=\"javascript:void(0);\" οnclick=\"fileUploadObject.clearFun(\'" + file.id + "\')\">清除</a>");
}
fileUploadObject.afterUploadSuccess(result, file);
},
//单个文件上传成功以后执行的接口
//result为后端返回的json字符串
afterUploadSuccess: function (resultJsonObj, file) {
},
//删除文件后要顺便删除文件名
delFun: function (fileName, iIndex) {
fileUploadObject._delFiles(iIndex);
fileUploadObject.resetProWinPosition(iIndex);
},
//文件完成上传 ,在uploadsuccess之后
uploadComplete: function (file) {
try {
/* I want the next upload to continue automatically so I'll call startUpload here */
if (swfu.getStats().files_queued > 0) {
swfu.startUpload();
}
else {
//所有文件上传完成之后执行的事件
fileUploadObject.uploadAllComplete(fileUploadObject._files);
}
} catch (ex) {
swfu.debug(ex);
}
},
//fileNames文件名称
uploadAllComplete: function (fileNamesArray) {
//向外界抛出的一个接口,可随意制定文件全部上传完成后执行的事件
},
uploadError: function (file, errorCode, message) {
fileUploadObject.paramesObject.errorCode = errorCode;
var progress;
try {
switch (errorCode) {
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
try {
$("#status_" + file.id).html("文件已取消!");
}
catch (ex1) {
swfu.debug(ex1);
}
break;
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
try {
$("#status_" + file.id).html("文件停止上传!");
}
catch (ex2) {
swfu.debug(ex2);
}
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
$("#status_" + file.id).html("该文件被限制上传!");
break;
case -230:
$("#status_" + file.id).html("上传路径错误,请重新选择上传目录!");
break;
default:
$("#status_" + file.id).html(message);
break;
}
} catch (ex3) {
swfu.debug(ex3);
}
},
//初始化上传文件的浮空窗口
initFileIntoWindow: function () {
if ($("#fileNum").length == 0) {
var uploadContentContent = '<div id="fileNum" style="width: 50px; height: 50px; background-color: #babbbf;position: fixed;_position:absolute;">';
uploadContentContent += '<span id="numSpanBtn" style="width: 100%; height: 100%; display:block;text-align: center; line-height:50px;font-size: 35px; color: red;cursor: pointer;">0</span>';
uploadContentContent += '</div>';
if($("body").find(".dialogWindow").hasClass("dialogWindow")){
$(".dialogWindow").append(uploadContentContent);
}else{
$("body").append(uploadContentContent);
}
rePosition();
$(window).bind("resize.uploadFile", function () {
rePosition();
});
$("#numSpanBtn").click(function () {
if ($(".fileUploadItem").length > 0) {
if ($(".fileUploadItem").eq(0).is(":visible")) {
fileUploadObject._hiddenFileWindow();
} else {
fileUploadObject._showFileWindow();
}
}
});
function rePosition() {
var left = $(window).width() - $("#fileNum").width() - 20;
var top = $(window).height() - $("#fileNum").height() - 20;
$("#fileNum").css({ "left": left + "px", "top": top + "px" });
}
//ie6
if (!-[1, ] && !window.XMLHttpRequest) {
$(window).bind("scroll", function () {
var left = $(window).width() - $("#fileNum").width() - 20 + $(document).scrollLeft();
var top = $(window).height() - $("#fileNum").height() - 20 + $(document).scrollTop();
$("#fileNum").css({ "left": left + "px", "top": top + "px" });
});
}
}
},
//显示文件上传进度列表
_showFileWindow: function () {
$(".fileUploadItem").each(function (i) {
var left = "-250px";
var top = (i + 1) * -82 + "px";
var width = "300px";
var height = "80px";
$(this).animate({ "left": left, "top": top, "opacity": 1, "width": width, "height": height }, 300 + i * 80);
})
},
//隐藏文件上传进度列表
_hiddenFileWindow: function () {
$(".fileUploadItem").each(function (i) {
$(this).animate({ "left": "50px", "top": "0px", "opacity": 0, "width": "0px", "height": "0px" }, 150 + i * 80);
})
},
//加入文件进度
addFileInfoWindow: function (file, isError, errorMsg) {
if ($("#div_" + file.id).length > 0) return;
var left = "-250";
var top = ($(".fileUploadItem").length + 1) * -82;
var fileUploadItem = ' <div class="fileUploadItem" id="div_' + file.id + '" style=" position: absolute; width: 300px; height: 80px; left: ' + left + 'px; top: ' + top + 'px; background-color: #babbbf; overflow: hidden; font-size: 12px; line-height:normal;" data-left=" ' + left + '" data-top="' + top + '">';
fileUploadItem += ' <div class="fileItem" style="margin: 5px;color: #0874B2; text-align:left;">';
fileUploadItem += ' <div class="rightShow" style="width:100%; float:left;">';
fileUploadItem += ' <div class="rightTop" style="height: 20px; width: 100%; line-height:20px; overflow:hidden;">';
fileUploadItem += ' <div id="name' + file.id + '" style="height: 100%; float: left; width:200px; overflow:hidden;">' + file.name + '</div>';
if (isError == true) {
fileUploadItem += ' <div class="controller" style=" height:100%; float:right;" id="controll' + file.id + '"><a href="javascript:void(0);" οnclick="fileUploadObject.clearFun(\'' + file.id + '\')">清除</a></div>';
}
else {
fileUploadItem += ' <div class="controller" style="height: 100%; float: right;" id="controll' + file.id + '"><a href="javascript:void(0);" class="cancelA" οnclick="fileUploadObject.cancelFun(\'' + file.id + '\')">取消</a></div>';
}
fileUploadItem += ' </div>';
fileUploadItem += ' <div class="rightBottom" style="height: 20px; line-height: 20px; width: 100%; margin-top: 5px;">';
fileUploadItem += ' <div style="float: left; background-color: #73C7F0; width: 200px; height: 15px; margin-top: 2px;">';
fileUploadItem += ' <div id="progress' + file.id + '" style="float: left; height: 15px; line-height: 15px; text-align: center; color: #ffffff; background-color: #0874B2; width: 0px;"></div>';
fileUploadItem += ' </div>';
fileUploadItem += ' <div class="progressNum" style="float: right;"><span id="loadData' + file.id + '">0MB</span>/<span id="totalData' + file.id + '">0MB</span></div>';
fileUploadItem += ' </div>';
if (isError != true) {
fileUploadItem += ' <div id="status_' + file.id + '">正在等待上传.........</div>';
} else {
fileUploadItem += ' <div id="status_' + file.id + '" style="color:red;">' + errorMsg + '</div>';
}
fileUploadItem += ' <div style="clear: both;"></div>';
fileUploadItem += ' </div>';
fileUploadItem += ' <div style="clear: both;"></div>';
fileUploadItem += ' </div>';
fileUploadItem += ' </div>';
$("#fileNum").append(fileUploadItem);
if ($(".fileUploadItem").length > 0) {
if ($(".fileUploadItem").eq(0).is(":hidden")) {
$("#div_" + file.id).css({ "left": "50px", "top": "0px", "opacity": 0, "width": "0px", "height": "0px" });
}
}
//如果还没有选择文件
if (!$("#numSpanBtn").hasClass("beforeStart")) {
$("#numSpanBtn").text($(".fileUploadItem").length - $(".success", "#fileNum").length).css("color", "red").addClass("beforeStart");
} else {
$("#numSpanBtn").text($(".fileUploadItem").length - $(".success", "#fileNum").length);
}
},
//重置进度条窗体位置 参数为要删除的文件id号
resetProWinPosition: function (id) {
$("#div_" + id).nextAll().each(function (i) {
var top = parseInt($(this).css("top"), 10) + 82;
$(this).animate({ "top": top + "px" }, 200 + i * 50);
});
//最终删除
var isSuccess = $("#div_" + id).hasClass("success");
$("#div_" + id).remove();
if ($("#numSpanBtn").hasClass("beforeStart")) {
if ($(".fileUploadItem").length - $(".success", "#fileNum").length == 0 && $(".success", "#fileNum").length != 0) {
$("#numSpanBtn").text(fileUploadObject._files.length).css("color", "green");
$("#numSpanBtn").removeClass("beforeStart");
} else {
$("#numSpanBtn").text($(".fileUploadItem").length - $(".success", "#fileNum").length);
}
} else {
if (isSuccess) {
$("#numSpanBtn").text(fileUploadObject._files.length);
if (fileUploadObject._files.length == 0) {
$("#numSpanBtn").css("color", "red");
}
}
}
},
//清空文件窗口
clearFileWindow: function () {
$(".fileUploadItem").each(function () {
var id = $(this).attr("id").replace("div_", "");
swfu.cancelUpload(id, true);
$(this).remove();
});
$("#numSpanBtn").text("0").css("color", "red").addClass("beforeStart");
fileUploadObject._files.length = 0;
}
};
var fileUploadObject = {
paramesObject: {
url: "", //action地址
sessionId: "", //sessionid,用于防止在firefox中flash文件上传时session丢失
fileSizeLimit: "20", //最大可上传的文件大小 单位MB
fileTypes: "*.avi;*.pdf;*.rar;*.zip;*.jpg;*.gif;*.doc;*.docx;*.xls;*.xlsx;*.html;*.txt;*.ppt;*.pptx;*.tif", //可上传的文件类型
path: "/", //引用的文件跟flash上传控件的相对路径 uploadjs/.....
isAutoUpload: false, //是否启用自动上传,即选择文件后自动上传
fileQueueLimit: "0", //0表示不限制选中文件个数,其他表示一次只能上传几个文件
isShowDelBtn: true,//是否显示删除按钮
post_params: {}, //跟文件一起传送的参数 post的参数信息,格式:{"aaa":"aaa0","bbb":"bbb0"}
// Button settings
button_image_name: "uploadbg.jpg",//必填 图片高度应该是button高度的三倍,有三种不同样式
button_placeholder_id: "spanButtonPlaceholder",//必填
button_width: 82,//必填
button_height: 29,//必填
button_text: '<span class="button">添加文件</span>',//必填
button_text_style: '.button {color:#ffffff;background: #0874B2;text-align: center;}',//必填
button_text_top_padding: 6,//必填
button_text_left_padding: 3//必填
},
_files: new Array(),
//添加文件 最终返回的文件名
_addFiles: function (result, flashFileId) {
var isExist = false;
for (var i = 0; i < fileUploadObject._files.length; i++) {
if (fileUploadObject._files[i].fileName == result.fileName) {
isExist = true;
break;
}
}
if (isExist == false) {
result.flashFileId = flashFileId;
fileUploadObject._files.push(result);
}
return isExist;
},
_delFiles: function (flashFileId) {
for (var i = 0; i < fileUploadObject._files.length; i++) {
if (fileUploadObject._files[i].flashFileId == flashFileId) {
fileUploadObject._files.splice(i, 1);
break;
}
}
},
init: function (paramesObject) {
this.paramesObject = paramesObject;
this.paramesObject.scuessCount = 0; //当前已经成功的有多少个
this.paramesObject.cancelCount = 0; //当前正在上传的有多少个
this.paramesObject.failCount = 0; //当前上传失败的有多少个
var url = paramesObject.url.indexOf(".aspx") == -1 ? paramesObject.url + ";jsessionid=" + paramesObject.sessionId : paramesObject.url;
//传递其他参数
paramesObject.post_params.fileTypes = paramesObject.fileTypes;
paramesObject.post_params.fileSizeLimit = paramesObject.fileSizeLimit;
swfu = new SWFUpload({
// Backend Settings
upload_url: url,
post_params: paramesObject.post_params,//post参数
// File Upload Settings
file_size_limit: paramesObject.fileSizeLimit + " MB",
file_types: paramesObject.fileTypes, //"*.rar;*.zip;*.jpg;*.gif;*.doc;*.docx;*.xls;*.xlsx;*.html;*.txt",
file_types_description: "All Files",
file_upload_limit: "0", // Zero means unlimited
file_queue_limit: paramesObject.fileQueueLimit,
file_queue_error_handler: fileUploadObject.fileQueueError,
file_dialog_complete_handler: fileUploadObject.fileDialogComplete,
upload_progress_handler: fileUploadObject.uploadProgress,
upload_error_handler: fileUploadObject.uploadError,
upload_success_handler: fileUploadObject.uploadSuccess,
upload_complete_handler: fileUploadObject.uploadComplete,
file_queued_handler: fileUploadObject.filequeued,
// Button settings
button_image_url: paramesObject.path + "uploadjs/" + paramesObject.button_image_name,
button_placeholder_id: paramesObject.button_placeholder_id,
button_width: paramesObject.button_width,
button_height: paramesObject.button_height,
button_text: paramesObject.button_text,
button_text_style: paramesObject.button_text_style,
button_text_top_padding: paramesObject.button_text_top_padding,
button_text_left_padding: paramesObject.button_text_left_padding,
// Flash Settings
flash_url: paramesObject.path + "uploadjs/swfupload.swf", // Relative to this file
custom_settings: {
upload_target: "divFileProgressContainer"
},
// Debug Settings
debug: false
});
//载入文件进度窗口
fileUploadObject.initFileIntoWindow();
},
//文件选择时错误
fileQueueError: function (file, errorCode, message) {
try {
var errorName = "";
if (errorCode === SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED) {
errorName = "只能上传" + fileUploadObject.paramesObject.fileQueueLimit + "个文件,请重新选择!";
alert(errorName);
return;
}
switch (errorCode) {
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
errorName = "文件大小为0!";
break;
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
errorName = "文件大小不能超过" + fileUploadObject.paramesObject.fileSizeLimit + "MB,请重新上传!";
break;
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
errorName = "文件格式错误,请重新上传";
break;
default:
errorName = message;
break;
}
fileUploadObject.addFileInfoWindow(file, true, errorName);
} catch (ex) {
swfu.debug(ex);
}
},
//文件加入队列后
filequeued: function (file) {
//文件个数有限制的情况
if (parseInt(fileUploadObject.paramesObject.fileQueueLimit) != 0) {
fileUploadObject.paramesObject.scuessCount = 0; //当前已经成功的有多少个
fileUploadObject.paramesObject.cancelCount = 0; //当前正在上传的有多少个
$("div[id^='controll']").each(function () {
if ($(this).find("a").hasClass("delA") || $(this).html() == "") {
fileUploadObject.paramesObject.scuessCount++;
}
else if ($(this).find("a").hasClass("cancelA")) {
fileUploadObject.paramesObject.cancelCount++;
}
})
}
if (fileUploadObject.paramesObject.scuessCount + fileUploadObject.paramesObject.cancelCount >= parseInt(fileUploadObject.paramesObject.fileQueueLimit) && parseInt(fileUploadObject.paramesObject.fileQueueLimit) != 0) {
swfu.cancelUpload(file.id, true);
fileUploadObject.paramesObject.failCount++; //由于文件上传总数超过限制导致取消上传的文件数
} else {
fileUploadObject.addFileInfoWindow(file, false, "");
}
},
//启动上传
startUpload: function () {
if (swfu.getStats().files_queued > 0) {
swfu.startUpload();
}
},
//选择完文件后的事件
fileDialogComplete: function (numFilesSelected, numFilesQueued) {
if (fileUploadObject.paramesObject.failCount > 0) {
alert("只能上传" + fileUploadObject.paramesObject.fileQueueLimit + "个文件");
fileUploadObject.paramesObject.failCount = 0;
}
try {
if (swfu.getStats().files_queued > 0) {
//启用自动上传
if (fileUploadObject.paramesObject.isAutoUpload == true) {
swfu.startUpload();
}
}
} catch (ex) {
swfu.debug(ex);
}
},
//上传进度
uploadProgress: function (file, bytesLoaded, bytesTotal) {
try {
var percent = Math.ceil((bytesLoaded / bytesTotal) * 100);
$("#progress" + file.id).css("width", percent / 100 * 200).html(percent + "%");
$("#loadData" + file.id).html((bytesLoaded / 1024 / 1024).toFixed(2) + "MB");
$("#totalData" + file.id).html((bytesTotal / 1024 / 1024).toFixed(2) + "MB");
if (percent == 100) {
$("#status_" + file.id).html("文件加载完成,准备上传......");
}
} catch (ex) {
swfu.debug(ex);
}
},
//取消上传
cancelFun: function (FileID) {
swfu.cancelUpload(FileID, true);
fileUploadObject.resetProWinPosition(FileID);
},
//清除文件
clearFun: function (FileID) {
fileUploadObject.resetProWinPosition(FileID);
},
//保存成功后
uploadSuccess: function (file, serverData) {
var result = eval("(" + serverData + ")");
if ($("#numSpanBtn").hasClass("beforeStart")) {
$("#numSpanBtn").removeClass("beforeStart").text("0").css("color", "green");
}
var hasMsg=true;
if(result.msg==undefined||result.msg==""||result.msg==null){
hasMsg=false;
}
switch (result.resultCode) {
case "0000":
file.name = result.fileName;
if (fileUploadObject._addFiles(result, file.id) == false) {
if (hasMsg == false) {
$("#status_" + file.id).html("上传成功!");
} else {
$("#status_" + file.id).html(result.msg);
}
$("#div_" + file.id).addClass("success");
if (fileUploadObject.paramesObject.isShowDelBtn) {
$("#controll" + file.id).html("<a href=\"javascript:void(0);\" class=\"delA\" οnclick=\"fileUploadObject.delFun(\'" + file.name + "','" + file.id + "\')\">删除</a>");
}
else {
$("#controll" + file.id).html("");
}
} else {
$("#status_" + file.id).html("<font color=red>该附件已经存在!</font>");
}
$("#numSpanBtn").text(fileUploadObject._files.length);
break;
case "0001":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>该附件已经存在!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0002":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>上传失败!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0003":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>上传格式不正确!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0004":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>您未登录,请重新登录!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0005":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>缺少文件格式限制!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0006":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>缺少文件限制大小参数!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
case "0007":
if(hasMsg==false){
$("#status_" + file.id).html("<font color=red>文件过大,请重新上传!</font>");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
default:
if(hasMsg==false){
$("#status_" + file.id).html("其他错误");
}else{
$("#status_" + file.id).html("<font color=red>"+result.msg+"</font>");
}
break;
}
if (result.resultCode != "0000") {
$("$controll" + file.id).html("<a href=\"javascript:void(0);\" οnclick=\"fileUploadObject.clearFun(\'" + file.id + "\')\">清除</a>");
}
fileUploadObject.afterUploadSuccess(result, file);
},
//单个文件上传成功以后执行的接口
//result为后端返回的json字符串
afterUploadSuccess: function (resultJsonObj, file) {
},
//删除文件后要顺便删除文件名
delFun: function (fileName, iIndex) {
fileUploadObject._delFiles(iIndex);
fileUploadObject.resetProWinPosition(iIndex);
},
//文件完成上传 ,在uploadsuccess之后
uploadComplete: function (file) {
try {
/* I want the next upload to continue automatically so I'll call startUpload here */
if (swfu.getStats().files_queued > 0) {
swfu.startUpload();
}
else {
//所有文件上传完成之后执行的事件
fileUploadObject.uploadAllComplete(fileUploadObject._files);
}
} catch (ex) {
swfu.debug(ex);
}
},
//fileNames文件名称
uploadAllComplete: function (fileNamesArray) {
//向外界抛出的一个接口,可随意制定文件全部上传完成后执行的事件
},
uploadError: function (file, errorCode, message) {
fileUploadObject.paramesObject.errorCode = errorCode;
var progress;
try {
switch (errorCode) {
case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
try {
$("#status_" + file.id).html("文件已取消!");
}
catch (ex1) {
swfu.debug(ex1);
}
break;
case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
try {
$("#status_" + file.id).html("文件停止上传!");
}
catch (ex2) {
swfu.debug(ex2);
}
case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
$("#status_" + file.id).html("该文件被限制上传!");
break;
case -230:
$("#status_" + file.id).html("上传路径错误,请重新选择上传目录!");
break;
default:
$("#status_" + file.id).html(message);
break;
}
} catch (ex3) {
swfu.debug(ex3);
}
},
//初始化上传文件的浮空窗口
initFileIntoWindow: function () {
if ($("#fileNum").length == 0) {
var uploadContentContent = '<div id="fileNum" style="width: 50px; height: 50px; background-color: #babbbf;position: fixed;_position:absolute;">';
uploadContentContent += '<span id="numSpanBtn" style="width: 100%; height: 100%; display:block;text-align: center; line-height:50px;font-size: 35px; color: red;cursor: pointer;">0</span>';
uploadContentContent += '</div>';
if($("body").find(".dialogWindow").hasClass("dialogWindow")){
$(".dialogWindow").append(uploadContentContent);
}else{
$("body").append(uploadContentContent);
}
rePosition();
$(window).bind("resize.uploadFile", function () {
rePosition();
});
$("#numSpanBtn").click(function () {
if ($(".fileUploadItem").length > 0) {
if ($(".fileUploadItem").eq(0).is(":visible")) {
fileUploadObject._hiddenFileWindow();
} else {
fileUploadObject._showFileWindow();
}
}
});
function rePosition() {
var left = $(window).width() - $("#fileNum").width() - 20;
var top = $(window).height() - $("#fileNum").height() - 20;
$("#fileNum").css({ "left": left + "px", "top": top + "px" });
}
//ie6
if (!-[1, ] && !window.XMLHttpRequest) {
$(window).bind("scroll", function () {
var left = $(window).width() - $("#fileNum").width() - 20 + $(document).scrollLeft();
var top = $(window).height() - $("#fileNum").height() - 20 + $(document).scrollTop();
$("#fileNum").css({ "left": left + "px", "top": top + "px" });
});
}
}
},
//显示文件上传进度列表
_showFileWindow: function () {
$(".fileUploadItem").each(function (i) {
var left = "-250px";
var top = (i + 1) * -82 + "px";
var width = "300px";
var height = "80px";
$(this).animate({ "left": left, "top": top, "opacity": 1, "width": width, "height": height }, 300 + i * 80);
})
},
//隐藏文件上传进度列表
_hiddenFileWindow: function () {
$(".fileUploadItem").each(function (i) {
$(this).animate({ "left": "50px", "top": "0px", "opacity": 0, "width": "0px", "height": "0px" }, 150 + i * 80);
})
},
//加入文件进度
addFileInfoWindow: function (file, isError, errorMsg) {
if ($("#div_" + file.id).length > 0) return;
var left = "-250";
var top = ($(".fileUploadItem").length + 1) * -82;
var fileUploadItem = ' <div class="fileUploadItem" id="div_' + file.id + '" style=" position: absolute; width: 300px; height: 80px; left: ' + left + 'px; top: ' + top + 'px; background-color: #babbbf; overflow: hidden; font-size: 12px; line-height:normal;" data-left=" ' + left + '" data-top="' + top + '">';
fileUploadItem += ' <div class="fileItem" style="margin: 5px;color: #0874B2; text-align:left;">';
fileUploadItem += ' <div class="rightShow" style="width:100%; float:left;">';
fileUploadItem += ' <div class="rightTop" style="height: 20px; width: 100%; line-height:20px; overflow:hidden;">';
fileUploadItem += ' <div id="name' + file.id + '" style="height: 100%; float: left; width:200px; overflow:hidden;">' + file.name + '</div>';
if (isError == true) {
fileUploadItem += ' <div class="controller" style=" height:100%; float:right;" id="controll' + file.id + '"><a href="javascript:void(0);" οnclick="fileUploadObject.clearFun(\'' + file.id + '\')">清除</a></div>';
}
else {
fileUploadItem += ' <div class="controller" style="height: 100%; float: right;" id="controll' + file.id + '"><a href="javascript:void(0);" class="cancelA" οnclick="fileUploadObject.cancelFun(\'' + file.id + '\')">取消</a></div>';
}
fileUploadItem += ' </div>';
fileUploadItem += ' <div class="rightBottom" style="height: 20px; line-height: 20px; width: 100%; margin-top: 5px;">';
fileUploadItem += ' <div style="float: left; background-color: #73C7F0; width: 200px; height: 15px; margin-top: 2px;">';
fileUploadItem += ' <div id="progress' + file.id + '" style="float: left; height: 15px; line-height: 15px; text-align: center; color: #ffffff; background-color: #0874B2; width: 0px;"></div>';
fileUploadItem += ' </div>';
fileUploadItem += ' <div class="progressNum" style="float: right;"><span id="loadData' + file.id + '">0MB</span>/<span id="totalData' + file.id + '">0MB</span></div>';
fileUploadItem += ' </div>';
if (isError != true) {
fileUploadItem += ' <div id="status_' + file.id + '">正在等待上传.........</div>';
} else {
fileUploadItem += ' <div id="status_' + file.id + '" style="color:red;">' + errorMsg + '</div>';
}
fileUploadItem += ' <div style="clear: both;"></div>';
fileUploadItem += ' </div>';
fileUploadItem += ' <div style="clear: both;"></div>';
fileUploadItem += ' </div>';
fileUploadItem += ' </div>';
$("#fileNum").append(fileUploadItem);
if ($(".fileUploadItem").length > 0) {
if ($(".fileUploadItem").eq(0).is(":hidden")) {
$("#div_" + file.id).css({ "left": "50px", "top": "0px", "opacity": 0, "width": "0px", "height": "0px" });
}
}
//如果还没有选择文件
if (!$("#numSpanBtn").hasClass("beforeStart")) {
$("#numSpanBtn").text($(".fileUploadItem").length - $(".success", "#fileNum").length).css("color", "red").addClass("beforeStart");
} else {
$("#numSpanBtn").text($(".fileUploadItem").length - $(".success", "#fileNum").length);
}
},
//重置进度条窗体位置 参数为要删除的文件id号
resetProWinPosition: function (id) {
$("#div_" + id).nextAll().each(function (i) {
var top = parseInt($(this).css("top"), 10) + 82;
$(this).animate({ "top": top + "px" }, 200 + i * 50);
});
//最终删除
var isSuccess = $("#div_" + id).hasClass("success");
$("#div_" + id).remove();
if ($("#numSpanBtn").hasClass("beforeStart")) {
if ($(".fileUploadItem").length - $(".success", "#fileNum").length == 0 && $(".success", "#fileNum").length != 0) {
$("#numSpanBtn").text(fileUploadObject._files.length).css("color", "green");
$("#numSpanBtn").removeClass("beforeStart");
} else {
$("#numSpanBtn").text($(".fileUploadItem").length - $(".success", "#fileNum").length);
}
} else {
if (isSuccess) {
$("#numSpanBtn").text(fileUploadObject._files.length);
if (fileUploadObject._files.length == 0) {
$("#numSpanBtn").css("color", "red");
}
}
}
},
//清空文件窗口
clearFileWindow: function () {
$(".fileUploadItem").each(function () {
var id = $(this).attr("id").replace("div_", "");
swfu.cancelUpload(id, true);
$(this).remove();
});
$("#numSpanBtn").text("0").css("color", "red").addClass("beforeStart");
fileUploadObject._files.length = 0;
}
};