(function($) {
//jq扩展
$.fn.extend({
upImgfun: function(options) {
this.each(function(i) {
var Opts = {
sum: 8,
imgType: ['JPEG','JPG','GIF','PNG'],
imgSize: 10,
errorFn: null,
success: null,
action: null,
method: "POST",
img_arr: null,
img_str: null,
more_pic: null,
del_action: null,
thisIndex : 0,
actionType : ''
};
//合并对象,后一个覆盖前一个
Opts = $.extend(Opts, options);
window.URL = window.URL || window.webkitURL;
var curthis = $(this),
imgArray = Opts.img_arr,
img = new Image(),
upMessage = '张,苹果手机建议横屏拍摄',
upfile = null,
upfile_save = null,
setTimes = null,
curSpan = null,
sum = imgArray.length ? Opts.sum - imgArray.length : Opts.sum,
upImgBut, thisIndex;
if(Opts.thisIndex){
thisIndex = Opts.thisIndex;
}else{
thisIndex = i;
}
if (Opts.actionType == 'pro') {
upMessage = upMessage + '(建议使用800*800像素,最大不超过10M)';
}
if (Opts.more_pic){
curthis.append('
最多' + sum + ''+upMessage+'');
}else{
curthis.append('
最多' + sum + ''+upMessage+'');
}
upImgBut = curthis.find(".upImgBut");
if (Opts.img_str != "") {
curthis.find(".upImgList").prepend(Opts.img_str);
curthis.find(".sumNum").attr("data-img", imgArray.join()).html(Opts.sum - imgArray.length);
}
if (sum == 0){
upImgBut.hide();
}
var fileSize = Opts.imgSize * 1000000;
var fileType = Opts.imgType.join('|').toLowerCase();
$('#upFile_'+ thisIndex).fileupload({
url: Opts.action,
dataType: 'json',
autoUpload: false,
// acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i,
acceptFileTypes: fileType,
maxFileSize: fileSize,
// multipart:true,
maxNumberOfFiles:Opts.sum - $.trim(curthis.find(".sumNum").attr('data-img')).length,
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
previewMaxWidth: 100,
previewMaxHeight: 100,
previewCrop: true
}).on('fileuploadadd', function (e, data) {
curthis.css('display','block');
var img_str = $.trim(curthis.find(".sumNum").attr('data-img'));
imgArray = (img_str) ? img_str.split(',') : [];
// var length = curthis.find(".upImgItem").length;
$.each(data.files,function(index,value){
var file_size = value.size;
var file_name = value.name;
var file_type = file_name.substr(file_name.lastIndexOf(".") + 1).toUpperCase(),
imgArray = (img_str) ? img_str.split(',') : [];
if (file_size > fileSize) {
Opts.errorFn("上传文件不能大于" + Opts.imgSize + "M");
return false;
}
if (file_name.indexOf(".") <= 0 && $.inArray(file_type, Opts.imgType) == -1 && isWeiXin()){
Opts.errorFn("该功能在微信中不能正常使用,请对接微信!!!");
return false;
}else{
if ($.inArray(file_type, Opts.imgType) == -1) {
Opts.errorFn("只支持" + Opts.imgType + "类型图片!");
return false;
}
}
var length = curthis.find(".upImgItem").length;
if (imgArray.length >= Opts.sum || length >= Opts.sum) {
Opts.errorFn("最多可上传" + Opts.sum + "张图片!");
return data.abort();
}else {
if (window.URL) {
//File API
imgsrc = window.URL.createObjectURL(data.files[0]); //创建一个object URL,并不是你的本地路径
img.onload = function(e) {
window.URL.revokeObjectURL(this.src); //图片加载后,释放object URL
}
} else if (window.FileReader) {
//opera不支持createObjectURL/revokeObjectURL方法。我们用FileReader对象来处理
var reader = new FileReader();
reader.readAsDataURL(data.files[0]);
reader.onload = function(e) {
imgsrc = this.result;
}
} else {
//ie
data.select();
data.blur();
var nfile = document.selection.createRange().text;
document.selection.empty();
imgsrc = nfile;
}
upImgBut.hide();
curSpan = $('
');
curSpan.append('');
curthis.find(".upImgList").prepend(curSpan);
thisIndex++
}
data.submit();
});
}).on('fileuploaddone', function (e, data) {
var result= data.result;
if (result.error && result.error != "0"){
Opts.errorFn(result.message);
// curthis.find('.upImgItem').remove();
curSpan.remove();
upImgBut.show();
}else{
var img_str = $.trim(curthis.find(".sumNum").attr('data-img'));
imgArray = (img_str) ? img_str.split(',') : [];
imgArray.unshift(result.file_id);
// curthis.find(".gress").remove();
if (!Opts.more_pic){
curthis.find(".gress").remove();
}
curthis.find(".upImgItem").eq(thisIndex-1).find(".gress").css('display','none');
thisIndex--;
curthis.find(" img").after("");
curthis.find(".sumNum").attr("data-img", imgArray.join()).html(Opts.sum - imgArray.length);
if (curthis.find(".upImgList").children("span").length > Opts.sum){
upImgBut.hide();
}else{
upImgBut.show();
}
}
}).on('fileuploadfail', function (e, data) {
if (data.errorThrown !== 'abort'){
Opts.errorFn("上传失败,服务器繁忙请稍后再试!");
curSpan.remove();
thisIndex--;
}
if (curthis.find(".upImgList").children("span").length > Opts.sum){
upImgBut.hide();
}else{
upImgBut.show();
}
}).prop('disabled', !$.support.fileInput)
.parent().addClass($.support.fileInput ? undefined : 'disabled');
});
}
});
})(jQuery);
function delimg(o,sum){
if (!sum) sum=1;
var obj = $(o).parent().parent().parent();
var del_action = "/wap/action/ajax_theme_upload_delete.php?username="+user_name;
var img_str = $.trim(obj.find('.sumNum').attr('data-img'));
var imgArray = img_str.split(',');
var indexs = $(o).parent().index();
$.post(del_action, {pic_id: imgArray[indexs]}, function(data) {
if (data == 1) {
imgArray.splice(indexs, 1);
obj.find(".sumNum").attr("data-img", imgArray.join()).html(sum - imgArray.length);
$(o).parent().remove();
if (imgArray.length < sum) {
obj.find(".upImgBut").show();
}
$(o).parent().remove();
} else {
showAllzz("服务器繁忙,请稍候再试!");
return false;
}
});
}
function isWeiXin(){
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/MicroMessenger/i) == 'micromessenger'){
return true;
}else{
return false;
}
}