$(function () {
//初始化绑定默认的属性
$.upLoadDefaults = $.upLoadDefaults || {};
$.upLoadDefaults.property = {
multiple: false, //是否多文件
water: false, //是否加水印
thumbnail: false, //是否生成缩略图
sendurl: null, //发送地址
filetypes: "jpg,jpeg,png,gif", //文件类型
filesize: "2048", //文件大小
btntext: "浏览...", //上传按钮的文字
swf: null, //SWF上传控件相对地址
fileType:100 // 10开头是图片 -图片 20开头是文件
};
//初始化上传控件
$.fn.InitUploader = function (b) {
var fun = function (parentObj) {
var p = $.extend({}, $.upLoadDefaults.property, b || {});
var btnObj = $('
' + p.btntext + '
').appendTo(parentObj);
//初始化属性.appendTo(parentObj)
//p.sendurl += "?action=UpLoadFile";
// if (p.water) {
// p.sendurl += "&IsWater=1";
//}
//if (p.thumbnail) {
// p.sendurl += "&IsThumbnail=1";
//}
//if (!p.multiple) {
// p.sendurl += "&DelFilePath=" + parentObj.siblings(".upload-path").val();
//}
if(p.sendurl == null || typeof(p.sendurl) == 'undefined'){
var file_type = parseInt(p.fileType);
if(file_type >= 100 && file_type < 200){
p.sendurl = config.pic_upload_path;
}
else if(file_type >= 200){
p.sendurl = config.file_upload_path;
}
}
//初始化WebUploader
var uploader = WebUploader.create({
auto: true, //自动上传
swf: p.swf, //SWF路径
server: p.sendurl, //上传地址
pick: {
id: btnObj,
multiple: p.multiple
},
accept: {
/*title: 'Images',*/
// extensions: p.filetypes
/*mimeTypes: 'image/*'*/
},
formData: {
'DelFilePath': '', //定义参数
'fileType':p.fileType
},
fileVal: 'Filedata', //上传域的名称
fileSingleSizeLimit: p.filesize * 1024 //文件大小
});
//当validate不通过时,会以派送错误事件的形式通知
uploader.on('error', function (type) {
switch (type) {
case 'Q_EXCEED_NUM_LIMIT':
alert("错误:上传文件数量过多!");
break;
case 'Q_EXCEED_SIZE_LIMIT':
alert("错误:文件总大小超出限制!");
break;
case 'F_EXCEED_SIZE':
alert("错误:文件大小超出限制!");
break;
case 'Q_TYPE_DENIED':
alert("错误:禁止上传该类型文件!");
break;
case 'F_DUPLICATE':
alert("错误:请勿重复上传该文件!");
break;
default:
alert('错误代码:' + type);
break;
}
});
//当有文件添加进来的时候
uploader.on('fileQueued', function (file) {
//如果是单文件上传,把旧的文件地址传过去
if (!p.multiple) {
uploader.options.formData.DelFilePath = parentObj.siblings(".upload-path").val();
uploader.options.formData.fileType = p.fileType;
}
//防止重复创建
if (parentObj.children(".upload-progress").length == 0) {
//创建进度条
var fileProgressObj = $('').appendTo(parentObj);
var progressText = $('正在上传,请稍候...').appendTo(fileProgressObj);
var progressBar = $('').appendTo(fileProgressObj);
var progressCancel = $('关闭').appendTo(fileProgressObj);
//绑定点击事件
progressCancel.click(function () {
uploader.cancelFile(file);
fileProgressObj.remove();
});
}
});
//文件上传过程中创建进度条实时显示
uploader.on('uploadProgress', function (file, percentage) {
var progressObj = parentObj.children(".upload-progress");
progressObj.children(".txt").html(file.name);
progressObj.find(".bar b").width(percentage * 100 + "%");
});
//当文件上传出错时触发
uploader.on('uploadError', function (file, reason) {
uploader.removeFile(file); //从队列中移除
alert(file.name + "上传失败,错误代码:" + reason);
});
//当文件上传成功时触发
uploader.on('uploadSuccess', function (file, data) {
if (data.status == '0') {
var progressObj = parentObj.children(".upload-progress");
progressObj.children(".txt").html(data.msg);
}
if (data.status == '1') {
// 文件
if(p.fileType >= 100 && p.fileType < 200){
//如果是单文件上传,则赋值相应的表单
if (!p.multiple) {
/*parentObj.siblings(".upload-name").val(file.name);
parentObj.siblings(".upload-path").val(data.path);
parentObj.siblings(".upload-size").val(file.size);*/
// parentObj.after(parentObj.prev().clone(true).attr('value', data.path));
//addImage(parentObj, data.path, data.thumb,data.rootPath);
addSingleImage(parentObj, data.path, data.thumb,data.rootPath);
} else {
addImage(parentObj, data.path, data.thumb,data.rootPath);
}
}
else if(p.fileType >= 200){
if (!p.multiple) {
parentObj.siblings(".upload-name").val(file.name);
parentObj.siblings(".upload-path").val(data.path);
parentObj.siblings(".upload-size").val(file.size);
$(parentObj).prevAll('.show-file').html(file.name);
// $(targetObj).prevAll('.show-file').attr('text', rootPath + thumbSrc );
}
}
else {
return ;
}
var progressObj = parentObj.children(".upload-progress");
progressObj.children(".txt").html("上传成功:" + file.name);
}
uploader.removeFile(file); //从队列中移除
});
//不管成功或者失败,文件上传完成时触发
uploader.on('uploadComplete', function (file) {
var progressObj = parentObj.children(".upload-progress");
progressObj.children(".txt").html("上传完成");
//如果队列为空,则移除进度条
if (uploader.getStats().queueNum == 0) {
progressObj.remove();
}
});
};
return $(this).each(function () {
fun($(this));
});
}
});
function addSingleImage(targetObj, originalSrc, thumbSrc, rootPath){
//var newLi = $('');
// $(targetObj).pre
//newLi.appendTo(targetObj);
// $(targetObj).prevAll('img').attr('src', rootPath + thumbSrc );
var newInput = targetObj.prev().clone(true).attr('value', originalSrc);
console.info(newInput);
$(targetObj).prev().prev().before('' + newInput[0].outerHTML + '
删除 ');
}
/*图片相册处理事件
=====================================================*/
//添加图片相册
function addImage(targetObj, originalSrc, thumbSrc,rootPath) {
//插入到相册UL里面
var newLi = $(''
+ ''
+ ''
+ ''
+ '
'
// + ''
+ '
'
//+ '描述'
+ '删除'
+ '');
newLi.appendTo(targetObj.siblings(".photo-list").children("ul"));
//默认第一个为相册封面
var focusPhotoObj = targetObj.siblings(".focus-photo");
if (focusPhotoObj.val() == "") {
focusPhotoObj.val(thumbSrc);
newLi.children(".img-box").addClass("selected");
}
}
//设置相册封面
function setFocusImg(obj) {
var focusPhotoObj = $(obj).parents(".photo-list").siblings(".focus-photo");
focusPhotoObj.val($(obj).children("img").eq(0).attr("src"));
$(obj).parent().siblings().children(".img-box").removeClass("selected");
$(obj).addClass("selected");
}
//设置图片描述
function setRemark(obj) {
var parentObj = $(obj); //父对象
var hidRemarkObj = parentObj.prevAll("input[name='hid_photo_remark']").eq(0); //取得隐藏值
var d = parent.dialog({
title: "图片描述",
content: '',
button: [{
value: '批量描述',
callback: function () {
var remarkObj = $('#ImageRemark', parent.document);
if (remarkObj.val() == "") {
parent.dialog({
title: '提示',
content: '亲,总该写点什么吧?',
okValue: '确定',
ok: function () { },
onclose: function(){
remarkObj.focus();
}
}).showModal();
return false;
}
parentObj.parent().parent().find("li input[name='hid_photo_remark']").val(remarkObj.val());
parentObj.parent().parent().find("li .img-box .remark i").html(remarkObj.val());
}
}, {
value: '单张描述',
callback: function () {
var remarkObj = $('#ImageRemark', parent.document);
if (remarkObj.val() == "") {
parent.dialog({
title: '提示',
content: '亲,总该写点什么吧?',
okValue: '确定',
ok: function () { },
onclose: function () {
remarkObj.focus();
}
}).showModal();
return false;
}
hidRemarkObj.val(remarkObj.val());
parentObj.siblings(".img-box").children(".remark").children("i").html(remarkObj.val());
},
autofocus: true
}]
}).showModal();
}
function delImg(obj) {
$(obj).parent().remove(); //删除的LI节点
}
//删除图片LI节点
/*
function delImg(obj) {
var parentObj = $(obj).parent().parent();
var focusPhotoObj = parentObj.parent().siblings(".focus-photo");
var smallImg = $(obj).siblings(".img-box").children("img").attr("src");
$(obj).parent().remove(); //删除的LI节点
//检查是否为封面
if (focusPhotoObj.val() == smallImg) {
focusPhotoObj.val("");
var firtImgBox = parentObj.find("li .img-box").eq(0); //取第一张做为封面
firtImgBox.addClass("selected");
focusPhotoObj.val(firtImgBox.children("img").attr("src")); //重新给封面的隐藏域赋值
}
}*/