/* * @tanqilin 2016 07 05 * 百度上传插件 * * UploaderPick:"#", //绑定按钮id * UploaderUrl:"", //百度插件地址 * UploaderServer:"", //上传api * UploaderMax:5 //现在最大上传个数 * UploadHiddenField:"" //隐藏域name */ var uploadlist = ""; var uploadObj = []; function upload(obj){ this.upobj = { UploaderUrl : obj.UploaderUrl ? obj.UploaderUrl : "https://cdn.bootcss.com/webuploader/0.1.1/webuploader.min.js", UploaderServer : obj.UploaderServer ? obj.UploaderServer :"/api/attachment/webupload?elementid=&watermark=" + obj.UploadWatermark + "&_time=" + Math.random() , UploaderPick : obj.UploaderPick ? obj.UploaderPick : "#upload01" , UploaderMax : obj.UploaderMax ? obj.UploaderMax : 100, UploaderSingle : obj.UploaderSingle ? obj.UploaderSingle : false, UploadHiddenField : obj.UploadHiddenField ? obj.UploadHiddenField : "field[]", UploadWatermark : obj.UploadWatermark ? obj.UploadWatermark : "" }, this.loadJS = function(url, callback){ var head = document.getElementsByTagName("head")[0]; var script = document.createElement("script"); script.src = url; var done = false; script.onload = script.onreadystatechange = function() { if (!done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete")) { done = true; callback(); script.onload = script.onreadystatechange = null; head.removeChild(script); } }; head.appendChild(script); } var _this=this; this.attachEventload(function(){ _this.loadCom(); }); } upload.prototype.attachEventload = function(argument){ // 判断页面是否加载完毕 if (window.attachEvent) { window.attachEvent("onload",argument); } else if (window.addEventListener) { window.addEventListener("load",argument, false); } }; upload.prototype.loadCom = function() { var _this=this; $("body").append("") if(typeof WebUploader != 'undefined'){ _this.upLoader(); }else{ this.loadJS(this.upobj.UploaderUrl + "?t=" + Math.random() ,function(){ _this.upLoader(); }); } }; upload.prototype.upLoader=function(){ var _this = this; var imgLinst = 0; var imgbuthtml = ""; // 百度上传插件初始化 var uploader = WebUploader.create({ // swf文件路径 swf:'/base/plugins/imguploader/uploader.swf', // 文件接收服务端。 server: this.upobj.UploaderServer, // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick: this.upobj.UploaderPick, //现在最大上传数 fileNumLimit: _this.upobj.UploaderMax, //fileSizeLimit: 500 * 1024 * 1024, //fileSingleSizeLimit: 10 * 1024 * 1024, extensions:'jpg|jpeg|gif|png|bmp', // 是否选择就上传 auto: true, accept: { title: 'Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeTypes: 'image/*' } // 不压缩image, 默认如果是jpeg,文件上传前会压缩一把再上传! //resize: false }); // 传递参数 /* uploader.option("formData", { // _token : "$token", elementid: "", watermark: this.upobj.UploadWatermark, _time: Math.random() });*/ // 判断格式 uploader.on("error",function(type){ //仅支持JPG、GIF、PNG、JPEG、BMP格式, if(type=='F_EXCEED_SIZE'||type=='Q_EXCEED_SIZE_LIMIT'){ layer.msg("上传的图片太大", {icon: 2}); return false; }else if(type=="Q_TYPE_DENIED"){ layer.msg("请上传JPG、GIF、PNG、JPEG、BMP格式", {icon: 2}); return false; }else if(type=="Q_EXCEED_NUM_LIMIT"){ layer.msg("超过图片最大上传数量", {icon: 2}); return false; }else { layer.msg("服务器繁忙请稍候再试", {icon: 2}); return false; } }); // 上传进度 uploader.on("uploadProgress",function(file,percentage){ var $li=$("#rt_"+file.source.ruid).parent().parent().parent().find("li[data-uploaderId='"+file.id+"']"); $li.find("small").show().html("正在上传文件"); $li.find(".rate").show().find("span").css({"width":percentage*100+"%"}); if(percentage==1){ $li.find(".rate").hide(); $li.find("small").show().html("正在保存数据"); } }); // 生成预览图 uploader.on("fileQueued",function(file,percentage){ var butThis = _this.upobj, file = file; imgLinst ++; var but =$("#rt_"+file.source.ruid).parents('form').find("input[type='submit']"); var upload_num = 0; if(but.attr('data-upload_num')){ upload_num = parseInt(but.attr('data-upload_num')); } but.attr('data-upload_num',upload_num+1); if(but.val() != "正在上传文件..." || but.val() == ""){ uploadlist = but.val() == "" ? "提交" : but.val(); } but.val("正在上传文件..."); but.attr("disabled","true"); uploader.makeThumb( file, function( error, src ) { if ( error ) { layer.msg("图片不能预览", {icon: 2}); return; } var $li2 = '
  • \ ×\ \

    \

    等待上传文件

    \

    上传失败

    \
  • '; var $li = '
  • \
    \ \
    \ \
    \
    \

    '+file.name+'

    \ 等待上传文件\
    \
    \ ×\

    \

    等待上传文件

    \

    上传失败

    \
  • '; if(_this.upobj.UploaderSingle) { if($("#rt_"+file.source.ruid).parent().parent().parent().children("li").eq(0).find("img").attr('src')){ $("#rt_"+file.source.ruid).parent().parent().parent().children("li").eq(0).find("img").attr('src',src); $("#rt_"+file.source.ruid).parent().parent().parent().children("li").eq(0).attr('data-uploaderId',file.id); }else{ $("#rt_"+file.source.ruid).parent().parent().before($li); } }else{ $("#rt_"+file.source.ruid).parent().parent().before($li); } $("#rt_"+file.source.ruid).parent().parent().parent().find(".close").unbind('click').click(function(){ var but = $("#rt_"+file.source.ruid).parents('form').find("input[type='submit']"); uploader.removeFile($(this).parent().attr("data-uploaderId")); var upload_num = 0; if(but.attr('data-upload_num')){ upload_num = parseInt(but.attr('data-upload_num')); } if($(this).parents('li').find("small").html() == "等待上传文件"){ but.attr('data-upload_num',upload_num-1); } if($(this).parents('li').find("small").html() == "正在保存数据" || $(this).parents('li').find("small").html()=="正在上传文件" ||$(this).parents('li').find("small").html() == "等待上传文件"){ uploadObj.push(file.source.ruid); } if($(this).parents('li').find("small").html()!="上传成功" && $(this).parents('li').find("small").html()!="保存失败" && $(this).parents('li').find("small").html()!="等待上传文件" ){ //uploadObj.push(file.source.ruid); upload_num = upload_num-1 <= 0 ? 1 : upload_num; but.attr('data-upload_num',upload_num-1); if(upload_num-1 <=0 ) { $("#rt_"+file.source.ruid).parents('form').find("input[type='submit']").removeAttr("disabled").val(uploadlist); } } $(this).parent().fadeOut("slow",function(){$(this).remove();}); }); },150,150); }); // 服务器回调 uploader.on('uploadSuccess', function( file, response ) { var but =$("#rt_"+file.source.ruid).parents('form').find("input[type='submit']"); imgLinst --; var isuplist = true; $.each(uploadObj, function(i,v) { if(file.source.ruid == v){ removeByValue(uploadObj, v); isuplist = false; } }); if(isuplist){ var upload_num = 0; if(but.attr('data-upload_num')){ upload_num = parseInt(but.attr('data-upload_num')); } //upload_num = upload_num-1 < 0 ? 2 : upload_num; but.attr('data-upload_num',upload_num-1); if(upload_num-1 <=0 ) { $("#rt_"+file.source.ruid).parents('form').find("input[type='submit']").removeAttr("disabled").val(uploadlist); } } if(imgLinst <= 0 ){ imgLinst == 0; // if(isuplist){$("#rt_"+file.source.ruid).parents('form').find("input[type='submit']").removeAttr("disabled").val(uploadlist); isuplist = true;} } var ruid=$("#rt_"+file.source.ruid).parent().parent().parent(); if(response.code==200){ ruid.find("li[data-uploaderId='"+file.id+"'] small").html("上传成功").show(); if(_this.upobj.UploaderSingle) { ruid.find("li[data-uploaderId='"+file.id+"']").append(''); }else{ ruid.find("li[data-uploaderId='"+file.id+"']").append(''); ruid.find("li[data-uploaderId='"+file.id+"']").append(''); } }else{ //ruid.find("li[data-uploaderId='"+file.id+"'] small").hide(); ruid.find("li[data-uploaderId='"+file.id+"'] small").html("保存失败"); } }); // setInterval(function(){ // if(imgLinst <= 0){ // imgLinst == 0; $(_this.upobj.UploaderPick).parents('form').find("input[type='submit']").removeAttr("disabled").val(uploadlist); // }else{ // $(_this.upobj.UploaderPick).parents('form').find("input[type='submit']").val("正在上传文件...").attr("disabled","true"); // } // },600); //所有文件上传后触发 uploader.on('uploadComplete', function(file) { });3 function removeByValue(arr, val) { for(var i=0; i 0 ){ eq++; $.each($("*[data-uploaderid]"), function(index, val) { if($(this).find("small").html()!="上传成功"&&$(this).find("small").html()!="保存失败"){ uploadUp = false; }else{ eq2++; } }); if(uploadUp || eq == eq2 ){ $("*[data-uploaderid]").parents('form').find("input[type='submit']").removeAttr("disabled").removeAttr("data-upload_num").val(uploadlist); uploadUp = true; } } },500);