http://100.64.47.15:8888/fi/sp?qstr=BEF96E059C5717842F0C1B689B927255c3owMDI2MDA
var UPLOAD_FILE_SUCCESS = "success";//服务器本来有的Files
var UPLOAD_FILE_FAIL = "fail";//默认值
var UPLOAD_FILE_DEL = "del";//标记删除的Files
var UPLOAD_FILE_ADD = "add";//标记新增的Files
var MAX_FILE_NUM = 9999;//默认最多上传的文件数量
var isUploading = false; //是否在上传过程中,若在上传过程中,不让提交(验证框架不通过);可以离开页面
var context = '/rmis';
/**
* 文件上传组件
*
* 文档说明:
* /prod-rmis-dg-dev/comp-rmis-core/doc/架构文档/uploadInfo上传组件说明文档.doc
*
*/
(function($){
/**
* 控件初始化函数
*/
$.fn.createUploader = function(options){
var defaults = {
flash_url : context + "/rmis/common/upload/js/swfupload.swf",//SWF的flash路径
upload_url: context + "/rmis/common/upload/commonUpload!ajaxfileupload.action", //上传的文件路径
fileSuffix: "*.*", //可上传的文件类型,“如*.jpg,*.gif”,用分号隔开
maxSize : 0, //文件大小限制,单位为KB,0表示大小无限制.有效的单位有B、KB、MB、GB,默认单位是KB
max:MAX_FILE_NUM, //允许上传的最多文件数量
min:0, //最少上传的文件数量,0代表无限制
compress : false, //是否压缩图片,默认不压缩
compressHeight : 600, //压缩后图片高度(等比压缩后图片高度最大值600),默认600
compressWidth : 800, //压缩后图片宽度(等比压缩后图片宽度最大值800),默认800
business_field : "business_field",//business_field 业务模块
render_text : "添加附件", //上传按钮的文字
file_types_description : "All Files",//上传选择文件对话框时文件描述
file_queue_limit : 0, //设置文件上传队列中等待文件的最大数量限制。
is_upload_complete_tips : false,//上传完后是否提示
upload_complete_tips : "所有文件上传完毕",//上传完后提示内容
delable : true, //是否开启删除功能呢
width : "455px", //控件的宽度
//height : "88px", //控件的高度
enable:true, // 是否开启上传功能,以下功能除了回调函数,其他属性在enable设为false仍可用
show_pic_num : 3, //控件的图片显示数量
jsonVal : null, //初始化的文件信息,后面要添加一个只传ID,然后JSON获取文件内容的方法
jsonKey : null, //初始化文件信息,只传文件的FID,优先级比 jsonVal 高
beforeUploadRende:function(uploadComponent){ // 控件渲染前调用的方法
},
afterUploadRende:function(uploadComponent){ // 控件渲染后调用的方法
},
fileUploadProcess:function(uploadComponent, swfObj){ // 文件上传时调用的方法,由swfuploader驱动
},
fileUploaded:function(uploadComponent, fileObj){ // 文件上传成功后调用的方法
// alert(eval("("+fileObj+")").fileName);
},
beforeRemoveFile:function(uploadComponent, fileObj){ // 删除文件前调用的方法,返回true则删除,否则不删除;如果文件在上传fileObject的state为fail
// alert(eval("("+fileObj+")").fileName);
// alert(fileObj);
return true;
}
};
var options = $.extend(defaults, options);
var $component = this.each(function(){
//初始化数据
var $initComponent = $(this);
var $beforeRemoveMethod = options.beforeRemoveFile;
if(options.maxSize != 0 && options.maxSize.indexOf("B") == -1){
options.maxSize = options.maxSize + "KB";
}
var $shwoPicNum = options.show_pic_num;
var $delable = options.delable;
var $min = options.min;
var $max = options.max;
var $firstLi = null;
var $uploadFileNum = 0;
var $businessField = options.business_field;
//提示
// var $tipsMsg = "";
//压缩限制
var $compress = options.compress;
var $compressHeight = 800;
var $compressWidth = 600;
//=======================================定义内部的方法 START===========================================
/**
* 设置提示信息
*/
setTips = function(){
var $suffixTips = "";
// if(options.fileSuffix != "*.*"){
// $suffixTips = "上传附件类型为" + options.fileSuffix + ";";
// }
var $maxSizeTips = "";
if(options.maxSize != 0){
$maxSizeTips = "每个附件不能超过" + options.maxSize + ";";
}
var $maxTips = "";
if($max != MAX_FILE_NUM){
$maxTips = "不能上传超过" + $max + "个附件;";
}
var $minTips = "";
if($min != 0){
$minTips = "至少上传" + $min + "个附件;";
}
var $tipsMsg = $suffixTips + $minTips + $maxSizeTips + $maxTips;
if($tipsMsg != ""){
$("#tips_msg").html("(" + $tipsMsg + ")");
}
};
/**
* 根据文件类型,判断应该用哪种样式
* @param {Object} suffix 文件后缀
*/
fixFileTypeIcon=function(suffix){
var dotIndex = suffix.lastIndexOf(".");
if(dotIndex == -1){
return "others";
}
var tmps = suffix.substring(dotIndex + 1, suffix.length).toLowerCase();
switch(tmps){
case "doc":
case "docx":
case "wps": return "doc";
case "txt": return "txt";
case "jpg":
case "jpeg":
case "bmp":
case "gif":
case "png": return "image";
default: return "others";
}
};
/**
* 渲染文件元素(初始化组件以后,才能调用这个函数)
* @param fileId 文件ID,上传的时候是控件的文件file.id,显示的时候是数据库的FID
* @param fileName 文件名
* @param path 文件下载路径,上传的时候这个无用
* @param suffix 文件后缀,根据文件类型显示不同的缩略图
*/
$.fn.showGeverFile = function(options){
var defaults = {
id : "id",
fileId : "fileId",
fileName : "fileName",
createTime : "null",
state : UPLOAD_FILE_ADD,
path : "path",
suffix:".doc",
onServer:false,
swfUpload: null,
before : false, //是否渲染到指定元素的前面
after_btn : false, //渲染到向前按钮的后部,否则渲染到向后按钮的前部
beforeRemoveMethod : $beforeRemoveMethod
};
var options = $.extend(defaults, options);
return this.each(function(){
//初始化fileObj
var fileObj = new Object();
fileObj.fid = options.fileId;
fileObj.path = options.path;
fileObj.fileName = options.fileName;
fileObj.suffix = options.suffix;
fileObj.state = options.state;
fileObj.createTime = options.createTime;
//初始化JQuery变量
var $thisDiv = $(this);
var $coverLi = $("<li/>").addClass("slideshowItem").css("margin", "0px 1px;").attr("id", "upload_file_table_" + options.id);
if(!options.onServer){
$coverLi.attr("name", "uploading_li");//标示文件为正在上传,服务器没有文件记录
}
var $coverTable = $("<table/>").addClass("loading_table");
var $iconTr = $("<tr/>");
var $iconTd = $("<td/>").addClass("loading_icon_td");
var $imgDiv = $("<div/>").addClass("loading_img_div");
var $delA = $("<a/>").attr("href", "#").addClass("loding_close");
var $image = $("<img/>").attr("src", options.path);
var $imageAndADiv = $("<div/>").css("height", "60px");
var title = options.fileName;
if(options.createTime != null){
title += "(上传时间 : " + options.createTime + ")";
}
var $titleCoverDiv = $("<div/>").addClass("loading_title_cover").attr("title", title);
var $titleDiv = $("<div/>").addClass("loading_title");
if(options.fileName.length > 18 ){
$titleDiv.html(options.fileName.substring(0, 15) + "...");
}else{
$titleDiv.html(options.fileName);
}
var $downLoadattr = $("<a/>").attr("href", "#");//下载链接
//进度条
var $progressTr = $("<tr/>");
var $progressTd = $("<td/>");
var $progressCoverDiv = $("<div/>").addClass("loading_bg_box");
var $progressDiv = $("<div/>").addClass("loading_bg").attr("id", "upload_progress_" + options.id)
.css("background", "url(" + context + "/rmis/common/upload/images/loading_bg.png" + ") repeat-x")
.css("width", "0%");
//进度条
$progressDiv.appendTo($progressCoverDiv);
$progressCoverDiv.appendTo($progressTd);
$progressTd.appendTo($progressTr);
//删除、图标、标题
$delA.appendTo($imageAndADiv);
$image.appendTo($imageAndADiv);
$imageAndADiv.appendTo($imgDiv);
$titleDiv.appendTo($titleCoverDiv);
$titleCoverDiv.appendTo($imgDiv);
$imgDiv.appendTo($iconTd);
$iconTd.appendTo($iconTr);
// 默认隐藏
$titleCoverDiv.hide();
//整合
$iconTr.appendTo($coverTable);
$progressTr.appendTo($coverTable);
$coverTable.appendTo($coverLi);
//控制显示的图标
switch(fixFileTypeIcon(options.suffix)){
case "image":
if(options.onServer){//服务器有,则显示图片
var folder = "/" + options.path.substring(0, options.path.lastIndexOf('/') + 1);
var fileName = options.path.substring(options.path.lastIndexOf('/') + 1, options.path.length);
//判断图片是否存在,为了兼容旧照片,旧照片没有缩略图
$image.attr("src", context + folder + "thumbs_" + fileName);
$image.load(function(){})
.error(function() {
if($image.attr("src") == (context + folder + "thumbs_" + fileName)){
$image.attr("src", context + folder + fileName).css("width", "90px").css("height", "60px");
}else{
return;
}
}) ;
}else{//正在上传图片,服务器没有图片的
$image.attr("src", context + "/rmis/common/upload/images/ico_wj.png").css("width", "90px").css("height", "60px");
}
break;
default:
$image.attr("src", context + "/rmis/common/upload/images/ico_wj.png").css("width", "90px").css("height", "60px");
};
// 控制显示和隐藏标题和删除按钮,不可以上传的时候,
$coverTable.mouseover(function(){
$titleCoverDiv.show();
if($delable){
$delA.css("background", "url(" + context + "/rmis/common/upload/images/ico_close2.png" + ") no-repeat");
}
});
$coverTable.mouseout(function(){
$titleCoverDiv.hide();
if($delable){
$delA.css("background", "");
}
});
//添加下载链接,隐藏进度条,增加hidden 的input框
if(options.onServer){
if(fixFileTypeIcon(options.suffix) == "image"){// 预览图片
$downLoadattr.attr("href", "#").bind("click", function(){
FormSubmit.winOpen(context + "/rmis/common/upload/showPic.jsp?currentAttachPath=" + context + "/" + options.path ,748,560,'selectIcon');
});
}else{//下载文件
$downLoadattr.attr("href", context + "/rmis/common/upload/downloadfile.jsp?filepath=" + options.path + "&filename=" + encodeURI(encodeURI(options.fileName)));
}
//图片和按钮渲染
$image.appendTo($downLoadattr);
$downLoadattr.appendTo($imageAndADiv);
$progressCoverDiv.hide();
//添加input 元素 用于上传到业务表
var json = $.toJSON(fileObj);
var $valInput = $("<input/>").attr("name", "commonFilesVals").attr("id", "upload_file_fid_" + options.fileId).attr("type", "hidden").val(json);
var $stateInput = $("<input/>").attr("name", "commonFilesState").attr("id", "upload_file_state_" + options.fileId).attr("type", "hidden").val(fileObj.state);
$valInput.appendTo($initComponent);
$stateInput.appendTo($initComponent);
}else{//上面已经渲染了
//$image.appendTo($imageAndADiv);
};
var delReturnJson = $.toJSON(fileObj);
//绑定点击删除动作
$delA.bind("click", function(){
var isDel = true;
// 删除文件前调用的方法
if (typeof options.beforeRemoveMethod == 'function') { // 确保类型为函数类型
if(options.onServer){
var returnfileObj = $.evalJSON($("#upload_file_fid_" + options.fileId).val());
var json = $.toJSON(returnfileObj);
isDel = options.beforeRemoveMethod($initComponent, json); // 执行回调函数
}else{ //上传过程取消上传,Json不传
isDel = options.beforeRemoveMethod($initComponent, delReturnJson); // 执行回调函数
}
};
//根据当前文件的state执行删除操作
if(isDel){
var $stateDom = $("#upload_file_state_" + options.fileId);
switch($stateDom.val()){
case UPLOAD_FILE_ADD :
//本次会话新增的Files,删除则不需要上传到业务里面,hidden的input都删除
/*$.getJSON(context + "/rmis/common/upload/commonUpload!ajaxDel.action?fid=" + options.fileId, function(json){
if(json.success){
$stateDom.remove();
$("#upload_file_fid_" + options.fileId).remove();
$coverLi.remove();
//删除的时候,显示指定数量的图片
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
getAllAttachNum();
}else{
alert("删除失败");
}
});*/
//更新 2014-5-4 删除文件由 Timer 执行
$stateDom.remove();
$("#upload_file_fid_" + options.fileId).remove();
$coverLi.remove();
//删除的时候,显示指定数量的图片
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
getAllAttachNum();
break;
case UPLOAD_FILE_SUCCESS : //本来有的Files,已经跟业务有关系的,删除需要标记为删除。修改对应fileObj的state,更新hidden的input的value
$stateDom.val(UPLOAD_FILE_DEL);
var fileObj = $.evalJSON($("#upload_file_fid_" + options.fileId).val());
fileObj.state = UPLOAD_FILE_DEL;
var json = $.toJSON(fileObj);
$("#upload_file_fid_" + options.fileId).val(json);
$coverLi.remove();
//删除的时候,显示指定数量的图片
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
getAllAttachNum();
break;
default://上传过程中取消
$coverLi.remove();
//删除的时候,显示指定数量的图片
$("#uploading_process_" + options.id).remove();
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
getAllAttachNum();
}
if(!options.onServer && options.swfUpload != null){//不在服务器(正在上传)则取消上传
options.swfUpload.cancelUpload(options.id, false);
};
}
});
//渲染
if(options.before){
$thisDiv.before($coverLi);
}else if(options.after_btn){
$("#prev_btn").after($coverLi);
}else{
$("#next_btn").before($coverLi);
}
//添加的时候,隐藏多余图片
$("#thumbs li.slideshowItem:gt(" + ($shwoPicNum - 1) +")").hide();
getAllAttachNum();
});
};
/**
* 根据fid的值从服务器获取信息,初始化插件
*/
$.fn.initGeverFile = function(fid){
return this.each(function(){
if(fid != null){
var fids = fid.split(",");
var dataStr = "";
$.each(fids, function(k, value){
dataStr += "&fid="+ value;
});
$.getJSON(context + "/rmis/common/upload/commonUpload!viewInfos.action?" + dataStr, function(json){
if(json.success){
init(json.entity);
}
});
}
});
};
/**
* 根据businessKey 和businessField 的值从服务器获取信息,初始化插件
*/
$.fn.initGeverFileByBusinessKey = function(businessKey, businessField){
return this.each(function(){
if(businessKey != null){
var businessKeys = businessKey.split(",");
var dataStr = "";
$.each(businessKeys, function(k, value){
dataStr += "&businessKey="+ value;
});
dataStr += "&businessField="+ businessField;
$.getJSON(context + "/rmis/common/upload/commonUpload!ajaxInfoByBusinessKey.action?" + dataStr, function(json){
if(json.success){
init(json.entity);
}
});
}
});
};
/**
* 根据jsonVal的值初始化插件,要求JSON格式
*/
$.fn.initGeverFileByVal = function(jsonVal){
return this.each(function(){
init(eval('(' + jsonVal + ')'));
});
};
/**
* 设置上传的最小文件数量
*/
$.fn.setMin = function(min){
return this.each(function(){
if(parseInt(min) >= 0){
$min = min;
$("#validateUploadLimitTips").remove();
validateUploadLimitTips();
setTips();
}
});
};
/**
* 设置最大压缩高度和宽度
*/
$.fn.setCompress = function(height, width, isCompress){
return this.each(function(){
$compress = true;
if("undefined" != typeof isCompress){
$compress = isCompress;
}
if(height <= 600){
$compressHeight = height;
}
if(width <= 800){
$compressWidth = width;
}
});
};
/**
* 设置上传的最大文件数量
*/
$.fn.setMax = function(max){
return this.each(function(){
if(parseInt(max) >= 0){
if(parseInt(max) == 0){
$max = MAX_FILE_NUM;
}else{
$max = max;
}
$("#validateUploadLimitTips").remove();
validateUploadLimitTips();
$swfUpload.setFileUploadLimit(max);
setTips();
}
});
};
/**
* 根据jsonVal的值,初始化插件
* jsonVal 格式 value:[{fid:'',path:'',fileName:'',suffix:'',state:''},{fid:'',path:'',fileName:'',suffix:'',state:''}]
*/
init = function(jsonVal){
$.each(jsonVal, function(k, value){
var key = "onServer_file_" + k;
$initComponent.showGeverFile({
id : key,//无ID
fileId : value.fid,
fileName : value.fileName,
state : UPLOAD_FILE_SUCCESS, //服务器的文件 State 初始化为 UPLOAD_FILE_SUCCESS
suffix : "." + value.suffix,
path : value.path,
createTime : value.createTime,
onServer : true,
swfUpload: null //初始化的时候不需要用到控件
});
});
};
/**
* 此事件在selectFile或者selectFiles调用后,文件选择对话框显示之前触发。只能同时存在一个文件对话框。
* 获取当前第一个元素
*/
fileDialogStart = function(){
$firstLi = $("#thumbs li.slideshowItem:first");
}
/**
* 添加要上传的的附件
* 当文件选择对话框关闭消失时,如果选择的文件成功加入上传队列,那么针对每个成功加入的文件都会触发一次该事件
*
*/
fileQueued = function(file){
//若不存在第一张图片,则上传文件的时候放在next按钮的前面
if(typeof($firstLi.html()) == "undefined" || $firstLi.html() == null){
$firstLi = $("#next_btn");
}
$firstLi.showGeverFile({
id : file.id,
state : UPLOAD_FILE_FAIL,
fileName : file.name,
suffix : file.type,
//before : true,
swfUpload: $swfUpload
});
//增加验证框架,不让提交
var $validateUploadingInput = $("<input/>").attr("id", "uploading_process_" + file.id).attr("type", "hidden")
.attr("validateType", "CustomMethod")
.attr("regexp", "validateUploadingFile()")
.val("notVal");
var validateMsg = "文件【" + file.name + "】正在上传,若要提交,请取消该文件上传;";
$validateUploadingInput.attr("msg", validateMsg);
$validateUploadingInput.appendTo($("#validate_input_content"));
$uploadFileNum++;
//压缩参数
$swfUpload.addFileParam(file.id, "compress", $compress);
$swfUpload.addFileParam(file.id, "compressHeight", $compressHeight);
$swfUpload.addFileParam(file.id, "compressWidth", $compressWidth);
};
/**
* 当选择文件对话框关闭,并且所有选择文件已经处理完成(加入上传队列成功或者失败)时,此事件被触发
* selectedNum 选择的文件数目
* queuedNum 选择的文件中成功加入队列的文件数目
*/
fileDialogComplete=function(selectedNum, queuedNum){
var cancelUpload = false;
if(!options.enable){
cancelUpload = true;
alert("不允许上传文件");
}else if(queuedNum != 0){//选择了文件之后
//判断是否到达文件上传限制
var validateMsg = "";
var successLen = 0;
$.each($("input[name='commonFilesState']"), function(){
switch($(this).val()){
case UPLOAD_FILE_SUCCESS:
case UPLOAD_FILE_ADD:
successLen++;
break;
default:
}
});
if(parseInt(successLen) > parseInt($max)){
validateMsg += "最多上传" + $max + "个附件。";
cancelUpload = true;
alert(validateMsg);
}
}
if(cancelUpload){
//取消上传
for(i = 0; i<queuedNum; i++){
$swfUpload.cancelUpload();
}
//删除增加的文件(不符合上传验证)
$.each($("li[name='uploading_li']"), function(){
var validateId = $(this).attr("id").replace("upload_file_table_", "uploading_process_");
$("#" + validateId).remove();
$(this).remove();
});
//删除的时候,显示指定数量的图片
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
}else{
// 开始上传
$swfUpload.startUpload();
}
};
/**
* 判断是否在上传过程中,用于验证,上传中则返回false
*/
validateUploadingFile = function(){
return !isUploading;
};
/**
* 上传过程
*/
uploadProgress = function(file, bytesLoaded, bytesTotal){
var percent = Math.ceil((bytesLoaded / (1.05*bytesTotal)) * 100);
$("#upload_progress_" + file.id).css("width", percent + "%");
// 文件上传时调用的方法,由swfuploader驱动
if (typeof options.fileUploadProcess == 'function') {
options.fileUploadProcess($initComponent, $swfUpload); // 执行回调函数
};
isUploading = true;
};
/**
* 完成上传后的动作,无论成功与否,选择多个文件的时候按顺序上传
* 服务器处理完毕
*/
uploadComplete=function(file){
$swfUpload.startUpload();
isUploading = false;
//上传成功,不再验证是否有文件在上传
$("#uploading_process_" + file.id).remove();
$uploadFileNum--;
//alert($("input[name='commonFilesState'][value='" + UPLOAD_FILE_FAIL + "']").length);
if($uploadFileNum == 0 && options.is_upload_complete_tips){
alert(options.upload_complete_tips);
}
};
/**
* 上传成功,服务器未处理
*/
uploadSuccess = function(file, data){
try{
var dataObj=eval("("+data+")");//转为JSON
if(dataObj.success){//重新渲染,删除元素
//封装数据
var fileObj = new Object();
fileObj.fid = dataObj.entity.fid;
fileObj.path = dataObj.entity.path;
fileObj.fileName = dataObj.entity.fileName;
fileObj.suffix = dataObj.entity.suffix;
fileObj.state = UPLOAD_FILE_ADD;
fileObj.createTime = dataObj.entity.createTime;
var $iconDiv = $("#upload_file_table_" + file.id);
//重新渲染
$iconDiv.showGeverFile({
id : file.id,
fileId : dataObj.entity.fid,
fileName : dataObj.entity.fileName,
state : UPLOAD_FILE_ADD,
suffix : "." + dataObj.entity.suffix,
path : dataObj.entity.path,
createTime : fileObj.createTime,
onServer : true,
before : true,
swfUpload: $swfUpload
});
//删除旧元素
$iconDiv.remove();
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
var json = $.toJSON(fileObj);
// 文件上传后调用的方法
if (typeof options.fileUploaded == 'function') {
options.fileUploaded($initComponent, json);
};
}else{
$("#upload_file_table_" + file.id).remove();
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
alert(dataObj.msg);
}
}catch (ex) {
$("#upload_file_table_" + file.id).remove();
$("#thumbs li.slideshowItem:lt(" + ($shwoPicNum ) +")").show();
alert("服务器保存附件出错");
}
};
/**
* 上传数量限制,跟业务相关,文件数量在范围之内则返回true,否则false
* addNum 新增的数量
*/
validateUploadLimit = function(addNum){
var successLen = addNum;
$.each($("input[name='commonFilesState']"), function(){
switch($(this).val()){
case UPLOAD_FILE_SUCCESS:
case UPLOAD_FILE_ADD:
successLen++;
break;
default:
}
});
if(parseInt(successLen) >= parseInt($min) && parseInt(successLen) <= parseInt($max)){
return true;
}else{
return false;
}
}
/**
* 上传数量限制,提示信息
*/
validateUploadLimitTips = function(){
var $validateInput = $("<input/>").attr("id", "validateUploadLimitTips").attr("type", "hidden").attr("validateType", "CustomMethod").attr("regexp", "validateUploadLimit(0)").val("notVal");
var validateMsg = "";
if($min != 0){
validateMsg += "至少上传" + $min + "个附件。";
}
if($max != MAX_FILE_NUM){
validateMsg += "最多上传" + $max + "个附件。";
}
$validateInput.attr("msg", validateMsg);
$validateInput.appendTo($("#validate_input_content"));
}
/**
* 添加文件到队列出错
*/
fileQueueError = function(file, errorCode, message) {
switch (errorCode) {
case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
alert("所选择的文件【" + file.name + "】超过文件大小限制,每个文件不超过" + options.maxSize);
break;
case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
alert("所选择的文件【" + file.name + "】是空文件,请重新选择其他文件");
break;
case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
alert("所选择的文件【" + file.name + "】的文件类型不符合要求,只允许上传的文件后缀名为:" + options.fileSuffix);
break;
case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
alert("所选择的文件超过文件数量限制,文件数量不超过" + $max + "个");
break;
default:
break;
}
}
/**
* 绑定前后移动的事件
*/
movePic = function(){
if($("#thumbs li.slideshowItem").length>$shwoPicNum){//大于指定个数,才移动
if (this.id == 'play_prev') {
var $last = $("#thumbs li.slideshowItem:last");
$("#prev_btn").after($last);
}else{
var $first = $("#thumbs li.slideshowItem:first");
$("#next_btn").before($first);
}
$("#thumbs li.slideshowItem").show();
$("#thumbs li.slideshowItem:gt(" + ($shwoPicNum - 1) +")").hide();
}
};
/**
* 获取文件数量
*/
getAllAttachNum = function(){
var allAttachNum = 0;
$.each($("input[name='commonFilesState']"), function(){
switch($(this).val()){
case UPLOAD_FILE_SUCCESS:
case UPLOAD_FILE_ADD:
allAttachNum++;
break;
default:
}
});
$("#upload_attach_num").html(" 已上传附件数量:" + allAttachNum);
};
//=======================================定义内部的方法 END===========================================
// 渲染前方法 , 引用回调函数
if (typeof options.beforeUploadRende == 'function') { // 确保类型为函数类型
options.beforeUploadRende($initComponent); // 执行回调函数
};
//========================================================
var $coverTable = $("<table/>").attr("border", "0").attr("cellpadding", "0").attr("cellspacing", "0").css("width", "100%");
var $tr_1 = $("<tr/>");
var $btnSpan = $("<span/>").attr("id", "attach_file_btn");
var $td_1_1 = $("<td/>").css("text-align", "center").css("width", "140px");
var $tipSpan = $("<span/>").attr("id", "tips_msg");
var $validateDiv = $("<div/>").attr("id", "validate_input_content").css("display", "none");
//var $td_1_2 = $("<td/>").css("height", "100%").css("width", "1px").css("background", "#afd0f1 repeat-y ");
var $td_1_2 = $("<td/>");
var $td_1_3 = $("<td/>").attr("colspan", "3");
var $div_1_3_1 = $("<div/>").css("height", "100%").css("width", options.width).css("border", "0px");
$btnSpan.appendTo($td_1_1);
$("<br/>").appendTo($td_1_1);
$tipSpan.appendTo($td_1_1);
$validateDiv.appendTo($td_1_2);
$td_1_1.appendTo($tr_1);
$td_1_2.appendTo($tr_1);
$tr_1.appendTo($coverTable);
$div_1_3_1.appendTo($td_1_3);
$td_1_3.appendTo($tr_1);
//外围框架的渲染,例如左右滑动按钮,控件大小控制
var $contentDiv = $("<div/>").attr("id", "thumbs").css("width", options.width).css("height", "80px");
var $ul = $("<ul/>");
var $prevBtn = $("<li/>").attr("id", "prev_btn").addClass("first").addClass("btnPrev");
var $nextBtn = $("<li/>").attr("id", "next_btn").addClass("last").addClass("btnNext").css("float", "right");
var $prevImg = $("<img/>").attr("id", "play_prev").attr("src", context + "/rmis/common/upload/images/left.png");
var $nextImg = $("<img/>").attr("id", "play_next").attr("src", context + "/rmis/common/upload/images/right.png");
$prevImg.appendTo($prevBtn);
$nextImg.appendTo($nextBtn);
$prevBtn.appendTo($ul);
$nextBtn.appendTo($ul);
$ul.appendTo($contentDiv);
$contentDiv.appendTo($div_1_3_1);
//显示附件数量
var $fileNumDiv = $("<div/>").attr("id", "upload_attach_num").css("margin-left", "24px").css("text-align", "left").css("width", options.width).css("height", "12px");
$fileNumDiv.appendTo($div_1_3_1);
//业务模块
$div_1_3_1.append($("<input/>").attr("type", "hidden").attr("name", "business_field").val($businessField));
$prevImg.bind('click', movePic);
$nextImg.bind('click', movePic);
$coverTable.appendTo($initComponent);
//=====================================================================
//设置提示信息
setTips();
//执行初始化方法,jsonKey或者jsonVal
if(options.jsonKey != null){
var dataStr = "";
var dataJson = eval('(' + options.jsonKey + ')');
$.each(dataJson, function(k, value){
dataStr += value.fid + ",";
});
$initComponent.initGeverFile(dataStr);
}else if(options.jsonVal != null){
init(eval('(' + options.jsonVal + ')'));//根据jsonVal初始化插件
}
$initComponent.setCompress(options.compressHeight, options.compressWidth, options.compress);
/**
* 初始化swf插件
*/
if(options.enable){
$swfUpload=new SWFUpload({
flash_url : options.flash_url,
upload_url: options.upload_url,
file_types: options.fileSuffix,
file_size_limit : options.maxSize,
file_upload_limit: $max,
post_params : {
"compress" : $compress,
"compressHeight" : $compressHeight,
"compressWidth" : $compressWidth
},
file_types_description : options.file_types_description,
file_queue_limit : options.file_queue_limit,
custom_settings : {
progressTarget : "fsUploadProgress",
cancelButtonId : "btnCancel"
},
debug: false,
// Button settings
button_placeholder_id: "attach_file_btn", //"spanButtonPlaceHolder",
button_image_url: context + "/rmis/common/upload/images/button2.png",
button_width: "108",
button_height: "22",
button_text: "<a href='#' class='theUploadFont'>" + options.render_text + "</a>",//options.render_text, //<a href="#" class="button_img_3">上传文件</a>
button_text_style: ".theUploadFont { display: block;color: #000000;text-align: center;}",
file_dialog_start_handler : fileDialogStart, //此事件在selectFile或者selectFiles调用后,文件选择对话框显示之前触发。只能同时存在一个文件对话框。
file_queued_handler : fileQueued, //选择文件后触发
file_dialog_complete_handler : fileDialogComplete, //当选择文件对话框关闭,并且所有选择文件已经处理完成(加入上传队列成功或者失败)时,此事件被触发
upload_complete_handler : uploadComplete,//上传结束(无论成功与否)
upload_success_handler : uploadSuccess,//上传成功
file_queue_error_handler : fileQueueError,
upload_progress_handler : uploadProgress
});
}
//结合验证框架,控制文件上传限制
validateUploadLimitTips();
// $initComponent.clearGarbage();//绑定自动清除垃圾文件动作
});
// 渲染后方法 , 引用回调函数
if (typeof options.afterUploadRende == 'function') { // 确保类型为函数类型
options.afterUploadRende($component); // 执行回调函数
};
return $component;
};
})(jQuery);
/**
* 获取图片引用,预览图片时,子窗口引用
*/
getAttach = function(){
var attach = [];
jQuery.each(jQuery("input[name='commonFilesVals']"), function(){
var json = eval("(" + jQuery(this).val() + ")");
switch(json.state){
case UPLOAD_FILE_SUCCESS:
case UPLOAD_FILE_ADD:
if(fixFileTypeIcon(json.suffix) == "image"){
attach.push(context + "/" + json.path);//统计图片数量
}
break;
default:
}
});
return attach;
};
/**
* 根据businessKey 和businessField 的值从服务器获取信息,打开图片浏览
*
* 提供给不需要初始化组件的页面
*/
showPicByBusinessKey = function(businessKey, businessField){
if(businessKey != null){
var businessKeys = businessKey.split(",");
var dataStr = "";
jQuery.each(businessKeys, function(k, value){
dataStr += "&businessKey="+ value;
});
dataStr += "&businessField="+ businessField;
FormSubmit.winOpen(context + "/rmis/common/upload/commonUpload!getPicByBusinessKey.action?" + dataStr ,748,560,'selectIcon');
}
};
临时文件
猜你喜欢
转载自ffffohno.iteye.com/blog/2296299
今日推荐
周排行