var upload_pic = []; var upload_file = []; var upload = []; var showUploadE; var showUploadUrl; var showUploadType = 1; var showUploadCall = false; var showUploadThis = false; var showUploadIndex = false; //创建监听函数 var xhrOnProgress=function(fun) { xhrOnProgress.onprogress = fun; //绑定监听 //使用闭包实现监听绑 return function() { //通过$.ajaxSettings.xhr();获得XMLHttpRequest对象 var xhr = $.ajaxSettings.xhr(); //判断监听函数是否为函数 if (typeof xhrOnProgress.onprogress !== 'function') return xhr; //如果有监听函数并且xhr对象支持绑定时就把监听函数绑定上去 if (xhrOnProgress.onprogress && xhr.upload) { xhr.upload.onprogress = xhrOnProgress.onprogress; } return xhr; } } function showUpload(i,e,key,url,assets,type) { layui.use(['upload','layer','element'], function() { var html = ''; var layer = layui.layer; var config = { type: 0, title: e.attr('value'), shade: 0.1, shadeClose : true, content: html, area: '800px' }; e.click(function() { url = url.replace('save', 'view'); showUploadE = e; if (!type) { type = 1; } showUploadType = type; showUploadUrl = url; var cur = $('#' + showUploadE.attr('v')).val(); $.getJSON(url, {json:1,key:key,cur:cur}, function(t) { config.content = t.data; showUploadIndex = layer.open(config); }) }) }); } function editorShowUpload(cur, url, title, func, self) { showUploadType = 2; showUploadCall = func; showUploadThis = self; layui.use(['upload','layer','element'], function() { var html = ''; var layer = layui.layer; var config = { type: 0, title: title, shade: 0.1, shadeClose : true, content: html, area: '800px' }; url = url.replace('save', 'view'); showUploadUrl = url; $.getJSON(url, {json:1,cur:cur}, function(t) { config.content = t.data; showUploadIndex = layer.open(config); }) }); } function showUploadFilesSet(e, name, url, id) { $('.layui-anim-yes').addClass('layui-anim-no'); $('.layui-anim-yes').removeClass('layui-anim-yes'); e.parent().removeClass('layui-anim-no'); e.parent().addClass('layui-anim-yes'); $('.file_cur').val(url); if (showUploadType == 1) { var value = showUploadE.attr('v'); loadUploadSet(showUploadE, value, {name:name,url:url}); } else if (showUploadType == 2) { showUploadCall.call(showUploadThis, url, name, id); if (showUploadIndex) { layer.close(showUploadIndex); showUploadIndex = false; } else { layer.closeAll(); } } else if (showUploadType == 3) { var value = showUploadE.attr('editor_id'); var key = showUploadE.attr('key'); //KindEditor.insertHtml('#' + value, '
'+name+':'+id+'(请勿修改)
'); KindEditor.insertHtml('#' + value, ''); if (showUploadIndex) { layer.close(showUploadIndex); showUploadIndex = false; } else { layer.closeAll(); } } } function showUploadFilesSearch(e) { var p = e.parent(); var pg = p.find('.file_pg').val(); var key = p.find('.file_key').val(); var name = p.find('.file_filename').val(); var tag = p.find('.file_tag').val(); var cate = p.find('.file_cate').val(); var cur = p.find('.file_cur').val(); var url = showUploadUrl; showUploadFiles(url, name, key, cate, tag, cur, pg); } function showUploadFiles(url, name, key, cate, tag, cur, pg) { if (!pg) { pg = 1; } $.getJSON(url, {json:1,key:key, name:name,cate:cate, tag:tag, pg:pg, cur:cur}, function(t) { var t = '
' + t.data + '
'; html = $(t).find('#component-anim').html(); $("#component-anim").html(html); }) } function loadUploadL(i,e,key,url,assets) { var value = e.attr('v'); if (typeof(upload[value]) != "undefined") { //return; } upload[value] = true; upload_pic[value] = []; upload_file[value] = []; var id = e.attr('id'); var token = e.attr('token'); var host = e.attr('host'); var domain = e.attr('domain'); var path = e.attr('path'); var cover = e.attr('cover'); if (!cover) { cover = 1; } var uploadUrl = url; url = domain; var config = { useCdnDomain: true, disableStatisticsReport: false, retryCount: 6 }; var putExtra = { fname: "", params: {}, mimeType: null }; layui.use(['layer','element'], function() { var layer = layui.layer; var element = layui.element; $("#" + id).unbind("change").bind("change",function() { var file = this.files[0]; // eslint-disable-next-line var finishedAttr = []; // eslint-disable-next-line var compareChunks = []; var observable; if (file) { element.progress(id + '_progress', '0%') layer.load(); var filename = file.name; var temp = filename.split('.'); putExtra.params["x:name"] = temp[0]; filename = path + hex_md5(file.name) + '.' + temp[temp.length-1]; //不覆盖 if (cover == 2) { var timestamp = Date.parse(new Date()); filename = path + hex_md5(file.name + '_' + timestamp) + '.' + temp[temp.length-1]; } // 设置next,error,complete对应的操作,分别处理相应的进度信息,错误信息,以及完成后的操作 var error = function(err) { //请求异常回调 console.log(err); layer.alert('文件上传错误1'); element.progress(id + '_progress', '0%') $('#' + id + '_progress').hide(); layer.closeAll('loading'); }; var complete = function(res) { //&& res.key.match(/\.(jpg|jpeg|png|gif)$/) if (res.key) { element.progress(id + '_progress', '0%') $('#' + id + '_progress').hide(); layer.closeAll('loading'); var data = {}; if (res.hash) { $.getJSON(uploadUrl.replace('save.start', 'qiniu.addFile'), {source:file.name,file:res.key, key:key}); data.status = 1; data.name = res.key; data.url = host + res.key; loadUploadSet(e,value,data); } else { layer.alert('文件上传错误2'); return false; } } }; var next = function(response) { var chunks = response.chunks||[]; var total = response.total; // 这里对每个chunk更新进度,并记录已经更新好的避免重复更新,同时对未开始更新的跳过 for (var i = 0; i < chunks.length; i++) { if (chunks[i].percent === 0 || finishedAttr[i]){ continue; } if (compareChunks[i].percent === chunks[i].percent){ continue; } if (chunks[i].percent === 100){ finishedAttr[i] = true; } } $('#' + id + '_progress').show(); element.progress(id + '_progress', parseInt(total.percent)+'%') compareChunks = chunks; }; var subObject = { next: next, error: error, complete: complete }; var subscription; // 调用sdk上传接口获得相应的observable,控制上传和暂停 observable = qiniu.upload(file, filename, token, putExtra, config); subscription = observable.subscribe(subObject); } }) }); } function loadUpload(i,e,key,url,assets) { var value = e.attr('v'); if (typeof(upload[value]) != "undefined") { //return; } upload[value] = true; upload_pic[value] = []; upload_file[value] = []; var data = {}; data.key = key; var token = e.attr('token'); var host = e.attr('host'); var domain = e.attr('domain'); var path = e.attr('path'); var cover = e.attr('cover'); if (!cover) { cover = 1; } if (token) { data.token = token; } var uploadUrl = url; if (domain) { url = domain; delete data.key; //data.key = 2; } var id = e.attr('id'); layui.use(['upload','layer','element'], function() { var layer = layui.layer; var layuiUpload = layui.upload; var element = layui.element; var uploadInst = layuiUpload.render({ elem: '#' + id ,data: data ,field: 'file' ,url: url ,multiple: true ,accept:'file' //,auto:false ,xhr:xhrOnProgress ,progress:function(value){//上传进度回调 value进度值 $('#' + id + '_progress').show(); element.progress(id + '_progress', value+'%')//设置页面进度条 } ,choose: function(obj, self){ if (domain) { obj.editFile(path, cover); } element.progress(id + '_progress', '0%') //layer.load(); } ,done: function(data, file) { if (data.hash) { data.status = 1; data.name = data.key; data.url = host + data.key; $.getJSON(uploadUrl.replace('save.start', 'qiniu.addFile'), {source:file.name,file:data.key, key:key}); } element.progress(id + '_progress', '0%') $('#' + id + '_progress').hide(); layer.closeAll('loading'); if (data.status == 1) { loadUploadSet(e,value,data); } else { element.progress(id + '_progress', '0%') layer.alert(data.message); return false; } } ,error: function(){ //请求异常回调 layer.alert('文件上传错误'); element.progress(id + '_progress', '0%') $('#' + id + '_progress').hide(); layer.closeAll('loading'); } }); }); } function loadUploadSet(e,value,data) { var mul = e.attr('mul'); if (mul == 'yes') { if (e.attr('t') == 'file') { if (upload_file[value].length <= 0 && $("#" + value).val()) { upload_file[value] = $("#" + value).val().split(','); } var m = $('.' +value+'_mul'); var i = m.find('li').eq(upload_file[value].length); if (i.length) { i.find('a').eq(0).html(data.name); } else { m.append('
  • '+data.name+'  [删除]
  • '); } upload_file[value].push(data.url); $("#" + value).val(upload_file.join(',')); } else { if (upload_pic[value].length <= 0 && $("#" + value).val()) { upload_pic[value] = $("#" + value).val().split(','); } var m = $('.' +value+'_mul'); var i = m.find('img').eq(upload_pic[value].length); if (i.length) { i.attr('src', data.url); } else { m.append('点此删除'); } upload_pic[value].push(data.url); $("#" + value).val(upload_pic[value].join(',')); } } else { if (e.attr('t') == 'file') { } else { $('#show_'+value).attr('src',data.url).show(); $('#show_'+value).unbind('click').bind('click', function() { picDel($(this), value, 1); }) } $('#'+value).val(data.url); } } function picDel(e,v,s) { if (confirm('确定要删除图片吗?')) { if (s == 1) { e.hide(); $("#" + v).val(''); } else { if (upload_pic[v].length <= 0 && $("#" + v).val()) { upload_pic[v] = $("#" + v).val().split(','); } var p = e.find('img').attr('src'); e.remove(); upload_pic[v].remove(p); $("#" + v).val(upload_pic[v].join(',')); } } } function fileDel(e,v) { if(confirm('确定要删除文件吗?')) { if(upload_file[v].length <= 0 && $("#" + v).val()) { upload_file[v] = $("#" + v).val().split(','); } var parent = e.parent(); var p = parent.find('a').eq(0).attr('href'); parent.remove(); upload_file[v].remove(p); //console.info(pic); $("#" + v).val(upload_file[v].join(',')); } }