(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; } }