mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
[更新]修改后台文件上传,去除无用插件
This commit is contained in:
parent
523e6602c3
commit
08c207b2f4
@ -69,6 +69,40 @@ class Plugs extends Controller
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取文件上传参数
|
||||||
|
* @throws \think\Exception
|
||||||
|
* @throws \think\exception\PDOException
|
||||||
|
*/
|
||||||
|
public function check()
|
||||||
|
{
|
||||||
|
$diff1 = explode(',', strtolower(input('exts')));
|
||||||
|
$diff2 = explode(',', strtolower(sysconf('storage_local_exts')));
|
||||||
|
$exts = array_intersect($diff1, $diff2);
|
||||||
|
$this->success('获取文件上传参数', [
|
||||||
|
'exts' => join('|', $exts),
|
||||||
|
'mime' => File::mine($exts),
|
||||||
|
'type' => $this->getUploadType(),
|
||||||
|
'push' => $this->getUploadPush(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成文件上传参数
|
||||||
|
* @return array
|
||||||
|
* @throws \think\Exception
|
||||||
|
*/
|
||||||
|
protected function getUploadPush()
|
||||||
|
{
|
||||||
|
switch ($this->getUploadType()) {
|
||||||
|
case 'oss':
|
||||||
|
case 'local':
|
||||||
|
return ['url' => '?s=admin/api.plugs/plupload', 'token' => uniqid('local_upload_')];
|
||||||
|
case 'qiniu':
|
||||||
|
return ['url' => File::instance('qiniu')->upload(true), 'token' => File::instance('qiniu')->buildUploadToken()];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文件上传方式
|
* 获取文件上传方式
|
||||||
* @return string
|
* @return string
|
||||||
|
@ -38,7 +38,7 @@ require.config({
|
|||||||
'spop': ['plugs/spop/spop.min'],
|
'spop': ['plugs/spop/spop.min'],
|
||||||
'json': ['plugs/jquery/json.min'],
|
'json': ['plugs/jquery/json.min'],
|
||||||
'michat': ['plugs/michat/michat'],
|
'michat': ['plugs/michat/michat'],
|
||||||
'upload': ['plugs/plupload/build'],
|
'upload': ['plugs/jquery/uploader'],
|
||||||
'base64': ['plugs/jquery/base64.min'],
|
'base64': ['plugs/jquery/base64.min'],
|
||||||
'echarts': ['plugs/echarts/echarts.min'],
|
'echarts': ['plugs/echarts/echarts.min'],
|
||||||
'angular': ['plugs/angular/angular.min'],
|
'angular': ['plugs/angular/angular.min'],
|
||||||
@ -293,7 +293,10 @@ $(function () {
|
|||||||
params.spm = obj && obj.getAttribute('data-menu-node') || this.queryNode(uri);
|
params.spm = obj && obj.getAttribute('data-menu-node') || this.queryNode(uri);
|
||||||
}
|
}
|
||||||
if (typeof params.spm !== 'string' || params.spm.length < 1) delete params.spm;
|
if (typeof params.spm !== 'string' || params.spm.length < 1) delete params.spm;
|
||||||
var query = '?' + $.param(params);
|
// 生成新的 URL 参数
|
||||||
|
var attrs = [];
|
||||||
|
for (var i in params) attrs.push([i, params[i]].join('='));
|
||||||
|
var query = '?' + attrs.join('&');
|
||||||
return uri + (query === '?' ? '' : query);
|
return uri + (query === '?' ? '' : query);
|
||||||
};
|
};
|
||||||
// 后台菜单动作初始化
|
// 后台菜单动作初始化
|
||||||
|
43
public/static/plugs/jquery/uploader.js
vendored
Normal file
43
public/static/plugs/jquery/uploader.js
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
define(function () {
|
||||||
|
return function (element, InitHandler, UploadedHandler, CompleteHandler) {
|
||||||
|
var exts = $(element).data('type') || '*';
|
||||||
|
var uptype = $(element).attr('data-uptype') || '';
|
||||||
|
|
||||||
|
// 检查可以上传的文件后缀
|
||||||
|
$.form.load('?s=admin/api.plugs/check', {exts: exts, uptype: uptype}, 'post', function (ret, options) {
|
||||||
|
options = {url: ret.data.push.url, exts: ret.data.exts, acceptMime: ret.data.mime, data: {token: ret.data.push.token}};
|
||||||
|
if (exts.indexOf('*') > -1) delete options.exts, delete options.acceptMime;
|
||||||
|
return renderUploader(options), false;
|
||||||
|
}, false, false, 0);
|
||||||
|
|
||||||
|
// 初始化上传组件
|
||||||
|
function renderUploader(options) {
|
||||||
|
this.options = {
|
||||||
|
proindex: 0,
|
||||||
|
elem: element,
|
||||||
|
multiple: $(element).attr('data-multiple') > 0,
|
||||||
|
url: '?s=admin/api.plugs/plupload',
|
||||||
|
before: function () {
|
||||||
|
this.proindex = $.msg.loading('上传进度 <span data-upload-progress></span>');
|
||||||
|
},
|
||||||
|
progress: function (n) {
|
||||||
|
$('[data-upload-progress]').html(n + '%');
|
||||||
|
},
|
||||||
|
done: function (ret) {
|
||||||
|
this.multiple || $.msg.close(this.proindex);
|
||||||
|
if (ret.uploaded) {
|
||||||
|
if (typeof UploadedHandler === 'function') UploadedHandler(ret.url);
|
||||||
|
else $('[name="' + ($(element).data('field') || 'file') + '"]').val(ret.url).trigger('change');
|
||||||
|
} else {
|
||||||
|
$.msg.error(ret.info || ret.error.message || '文件上传出错!');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
allDone: function () {
|
||||||
|
$.msg.close(this.proindex), $(element).html($(element).data('html'));
|
||||||
|
if (typeof CompleteHandler === 'function') CompleteHandler();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
layui.upload.render($.extend(this.options, options));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
|
html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class="layui-icon '+u+'" lay-type="sub">'+("updown"===n.anim?"":"")+"</button>",'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"":"")+"</button>"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class="'+c+'"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("<li"+(n.index===e?' class="layui-this"':"")+"></li>")}),i.join("")}(),"</ul></div>"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a<n.index&&e.slide("sub",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+" "+d+" "+s+" "+o+" "+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,"change("+m+")",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){clearInterval(e.timer)}).on("mouseleave",function(){e.autoplay()}),i.elem.data("haveEvents",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});
|
;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class="layui-icon '+u+'" lay-type="sub">'+("updown"===n.anim?"":"")+"</button>",'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"":"")+"</button>"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class="'+c+'"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("<li"+(n.index===e?' class="layui-this"':"")+"></li>")}),i.join("")}(),"</ul></div>"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a<n.index&&e.slide("sub",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+" "+d+" "+s+" "+o+" "+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,"change("+m+")",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){clearInterval(e.timer)}).on("mouseleave",function(){e.autoplay()}),i.elem.data("haveEvents",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});
|
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss");
|
;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss");
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon "></i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="<cite>加载更多</cite>",h=l('<div class="layui-flow-more"><a href="javascript:;">'+d+"</a></div>");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});
|
;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon "></i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="<cite>加载更多</cite>",h=l('<div class="layui-flow-more"><a href="javascript:;">'+d+"</a></div>");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
;layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href="javascript:;" class="layui-laypage-prev'+(1==a.curr?" "+r:"")+'" data-page="'+(a.curr-1)+'">'+a.prev+"</a>":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push('<a href="javascript:;" class="layui-laypage-first" data-page="1" title="首页">'+(a.first||1)+"</a>");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class="layui-laypage-spr">…</span>');r<=u;r++)r===a.curr?e.push('<span class="layui-laypage-curr"><em class="layui-laypage-em" '+(/^#/.test(a.theme)?'style="background-color:'+a.theme+';"':"")+"></em><em>"+r+"</em></span>"):e.push('<a href="javascript:;" data-page="'+r+'">'+r+"</a>");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class="layui-laypage-spr">…</span>'),0!==t&&e.push('<a href="javascript:;" class="layui-laypage-last" title="尾页" data-page="'+a.pages+'">'+(a.last||a.pages)+"</a>")),e.join("")}(),next:function(){return a.next?'<a href="javascript:;" class="layui-laypage-next'+(a.curr==a.pages?" "+r:"")+'" data-page="'+(a.curr+1)+'">'+a.next+"</a>":""}(),count:'<span class="layui-laypage-count">共 '+a.count+" 条</span>",limit:function(){var e=['<span class="layui-laypage-limits"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value="'+n+'"'+(n===a.limit?"selected":"")+">"+n+" 条/页</option>")}),e.join("")+"</select></span>"}(),refresh:['<a href="javascript:;" data-page="'+a.curr+'" class="layui-laypage-refresh">','<i class="layui-icon layui-icon-refresh"></i>',"</a>"].join(""),skip:function(){return['<span class="layui-laypage-skip">到第','<input type="text" min="1" value="'+a.curr+'" class="layui-input">','页<button type="button" class="layui-laypage-btn">确定</button>',"</span>"].join("")}()};return['<div class="layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?"molv":a.theme:"default")+'" id="layui-laypage-'+a.index+'">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"</div>"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)"a"===r[o].nodeName.toLowerCase()&&s.on(r[o],"click",function(){var e=0|this.getAttribute("data-page");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});
|
;layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href="javascript:;" class="layui-laypage-prev'+(1==a.curr?" "+r:"")+'" data-page="'+(a.curr-1)+'">'+a.prev+"</a>":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push('<a href="javascript:;" class="layui-laypage-first" data-page="1" title="首页">'+(a.first||1)+"</a>");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class="layui-laypage-spr">…</span>');r<=u;r++)r===a.curr?e.push('<span class="layui-laypage-curr"><em class="layui-laypage-em" '+(/^#/.test(a.theme)?'style="background-color:'+a.theme+';"':"")+"></em><em>"+r+"</em></span>"):e.push('<a href="javascript:;" data-page="'+r+'">'+r+"</a>");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class="layui-laypage-spr">…</span>'),0!==t&&e.push('<a href="javascript:;" class="layui-laypage-last" title="尾页" data-page="'+a.pages+'">'+(a.last||a.pages)+"</a>")),e.join("")}(),next:function(){return a.next?'<a href="javascript:;" class="layui-laypage-next'+(a.curr==a.pages?" "+r:"")+'" data-page="'+(a.curr+1)+'">'+a.next+"</a>":""}(),count:'<span class="layui-laypage-count">共 '+a.count+" 条</span>",limit:function(){var e=['<span class="layui-laypage-limits"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value="'+n+'"'+(n===a.limit?"selected":"")+">"+n+" 条/页</option>")}),e.join("")+"</select></span>"}(),refresh:['<a href="javascript:;" data-page="'+a.curr+'" class="layui-laypage-refresh">','<i class="layui-icon layui-icon-refresh"></i>',"</a>"].join(""),skip:function(){return['<span class="layui-laypage-skip">到第','<input type="text" min="1" value="'+a.curr+'" class="layui-input">','页<button type="button" class="layui-laypage-btn">确定</button>',"</span>"].join("")}()};return['<div class="layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?"molv":a.theme:"default")+'" id="layui-laypage-'+a.index+'">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"</div>"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)"a"===r[o].nodeName.toLowerCase()&&s.on(r[o],"click",function(){var e=0|this.getAttribute("data-page");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});
|
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});
|
;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});
|
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
;layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class="layui-rate" '+(i.readonly?"readonly":"")+">",u=1;u<=i.length;u++){var r='<li class="layui-inline"><i class="layui-icon '+(u>Math.floor(i.value)?o:s)+'" '+l+"></i></li>";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class="layui-icon layui-icon-rate-half" '+l+"></i></li>":n+=r}n+="</ul>"+(i.text?'<span class="layui-inline">'+i.value+"星":"")+"</span>";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});
|
;layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class="layui-rate" '+(i.readonly?"readonly":"")+">",u=1;u<=i.length;u++){var r='<li class="layui-inline"><i class="layui-icon '+(u>Math.floor(i.value)?o:s)+'" '+l+"></i></li>";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class="layui-icon layui-icon-rate-half" '+l+"></i></li>":n+=r}n+="</ul>"+(i.text?'<span class="layui-inline">'+i.value+"星":"")+"</span>";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,2 +1,2 @@
|
|||||||
/** layui-v2.5.4 MIT License By https://www.layui.com */
|
/** layui-v2.5.5 MIT License By https://www.layui.com */
|
||||||
;layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['<ul class="'+a+'">',t.bar1?'<li class="layui-icon" lay-type="bar1" style="'+t.bgcolor+'">'+c[0]+"</li>":"",t.bar2?'<li class="layui-icon" lay-type="bar2" style="'+t.bgcolor+'">'+c[1]+"</li>":"",'<li class="layui-icon '+o+'" lay-type="top" style="'+t.bgcolor+'">'+c[2]+"</li>","</ul>"].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n<e;n++)i+="0";return t<Math.pow(10,e)?i+(0|t):t},toDateString:function(t,e){var i=this,n=new Date(t||new Date),a=[i.digit(n.getFullYear(),4),i.digit(n.getMonth()+1),i.digit(n.getDate())],o=[i.digit(n.getHours()),i.digit(n.getMinutes()),i.digit(n.getSeconds())];return e=e||"yyyy-MM-dd HH:mm:ss",e.replace(/yyyy/g,a[0]).replace(/MM/g,a[1]).replace(/dd/g,a[2]).replace(/HH/g,o[0]).replace(/mm/g,o[1]).replace(/ss/g,o[2])},escape:function(t){return String(t||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)});
|
;layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['<ul class="'+a+'">',t.bar1?'<li class="layui-icon" lay-type="bar1" style="'+t.bgcolor+'">'+c[0]+"</li>":"",t.bar2?'<li class="layui-icon" lay-type="bar2" style="'+t.bgcolor+'">'+c[1]+"</li>":"",'<li class="layui-icon '+o+'" lay-type="top" style="'+t.bgcolor+'">'+c[2]+"</li>","</ul>"].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n<e;n++)i+="0";return t<Math.pow(10,e)?i+(0|t):t},toDateString:function(t,e){var i=this,n=new Date(t||new Date),a=[i.digit(n.getFullYear(),4),i.digit(n.getMonth()+1),i.digit(n.getDate())],o=[i.digit(n.getHours()),i.digit(n.getMinutes()),i.digit(n.getSeconds())];return e=e||"yyyy-MM-dd HH:mm:ss",e.replace(/yyyy/g,a[0]).replace(/MM/g,a[1]).replace(/dd/g,a[2]).replace(/HH/g,o[0]).replace(/mm/g,o[1]).replace(/ss/g,o[2])},escape:function(t){return String(t||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
@ -1,58 +0,0 @@
|
|||||||
define(['plupload'], function (plupload) {
|
|
||||||
window.plupload = plupload;
|
|
||||||
return function (element, InitHandler, UploadedHandler, CompleteHandler) {
|
|
||||||
var $element = $(element), index = 0;
|
|
||||||
if ($element.data('uploader')) return $element.data('uploader');
|
|
||||||
var loader = new plupload.Uploader({
|
|
||||||
multi_selection: $element.attr('data-multiple') > 0,
|
|
||||||
multipart_params: {
|
|
||||||
safe: $element.attr('data-safe') || '0',
|
|
||||||
uptype: $element.attr('data-uptype') || '',
|
|
||||||
},
|
|
||||||
drop_element: $element.get(0),
|
|
||||||
browse_button: $element.get(0),
|
|
||||||
url: '?s=admin/api.plugs/plupload',
|
|
||||||
runtimes: 'html5,flash,silverlight,html4',
|
|
||||||
file_data_name: $element.attr('data-name') || 'file',
|
|
||||||
flash_swf_url: baseRoot + 'plugs/plupload/Moxie.swf',
|
|
||||||
silverlight_xap_url: baseRoot + 'plugs/plupload/Moxie.xap',
|
|
||||||
filters: [{title: 'files', extensions: $element.attr('data-type') || '*'}],
|
|
||||||
});
|
|
||||||
if (typeof InitHandler === 'function') {
|
|
||||||
loader.bind('Init', InitHandler);
|
|
||||||
}
|
|
||||||
loader.bind('FilesAdded', function () {
|
|
||||||
loader.start();
|
|
||||||
index = $.msg.loading('上传进度 <span data-upload-progress></span>');
|
|
||||||
});
|
|
||||||
loader.bind('UploadProgress', function (up, file) {
|
|
||||||
$('[data-upload-progress]').html(parseFloat(file.loaded * 100 / file.total).toFixed(2) + '%');
|
|
||||||
});
|
|
||||||
loader.bind('FileUploaded', function (up, file, res) {
|
|
||||||
if (parseInt(res.status) === 200) {
|
|
||||||
var ret = JSON.parse(res.response);
|
|
||||||
if (ret.uploaded) {
|
|
||||||
if (typeof UploadedHandler === 'function') {
|
|
||||||
UploadedHandler(ret.url);
|
|
||||||
} else {
|
|
||||||
var field = $element.data('field') || 'file';
|
|
||||||
$('[name="' + field + '"]').val(ret.url).trigger('change');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$.msg.error(ret.info || ret.error.message || '文件上传出错!');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
loader.bind('Error', function () {
|
|
||||||
console.log(arguments);
|
|
||||||
});
|
|
||||||
loader.bind('UploadComplete', function () {
|
|
||||||
$.msg.close(index), $element.html($element.data('html'));
|
|
||||||
if (typeof CompleteHandler === 'function') {
|
|
||||||
CompleteHandler();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$element.data('html', $element.html()), loader.init();
|
|
||||||
return $element.data('uploader', loader), loader;
|
|
||||||
}
|
|
||||||
});
|
|
16
public/static/plugs/plupload/moxie.min.js
vendored
16
public/static/plugs/plupload/moxie.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
13
public/static/plugs/plupload/plupload.min.js
vendored
13
public/static/plugs/plupload/plupload.min.js
vendored
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 2.6 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.6 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 1.6 KiB |
@ -1,569 +0,0 @@
|
|||||||
(function( $ ){
|
|
||||||
// 当domReady的时候开始初始化
|
|
||||||
$(function() {
|
|
||||||
var $wrap = $('#uploader'),
|
|
||||||
|
|
||||||
// 图片容器
|
|
||||||
$queue = $( '<ul class="filelist"></ul>' )
|
|
||||||
.appendTo( $wrap.find( '.queueList' ) ),
|
|
||||||
|
|
||||||
// 状态栏,包括进度和控制按钮
|
|
||||||
$statusBar = $wrap.find( '.statusBar' ),
|
|
||||||
|
|
||||||
// 文件总体选择信息。
|
|
||||||
$info = $statusBar.find( '.info' ),
|
|
||||||
|
|
||||||
// 上传按钮
|
|
||||||
$upload = $wrap.find( '.uploadBtn' ),
|
|
||||||
|
|
||||||
// 没选择文件之前的内容。
|
|
||||||
$placeHolder = $wrap.find( '.placeholder' ),
|
|
||||||
|
|
||||||
$progress = $statusBar.find( '.progress' ).hide(),
|
|
||||||
|
|
||||||
// 添加的文件数量
|
|
||||||
fileCount = 0,
|
|
||||||
|
|
||||||
// 添加的文件总大小
|
|
||||||
fileSize = 0,
|
|
||||||
|
|
||||||
// 优化retina, 在retina下这个值是2
|
|
||||||
ratio = window.devicePixelRatio || 1,
|
|
||||||
|
|
||||||
// 缩略图大小
|
|
||||||
thumbnailWidth = 110 * ratio,
|
|
||||||
thumbnailHeight = 110 * ratio,
|
|
||||||
|
|
||||||
// 可能有pedding, ready, uploading, confirm, done.
|
|
||||||
state = 'pedding',
|
|
||||||
|
|
||||||
// 所有文件的进度信息,key为file id
|
|
||||||
percentages = {},
|
|
||||||
// 判断浏览器是否支持图片的base64
|
|
||||||
isSupportBase64 = ( function() {
|
|
||||||
var data = new Image();
|
|
||||||
var support = true;
|
|
||||||
data.onload = data.onerror = function() {
|
|
||||||
if( this.width != 1 || this.height != 1 ) {
|
|
||||||
support = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
|
|
||||||
return support;
|
|
||||||
} )(),
|
|
||||||
|
|
||||||
// 检测是否已经安装flash,检测flash的版本
|
|
||||||
flashVersion = ( function() {
|
|
||||||
var version;
|
|
||||||
|
|
||||||
try {
|
|
||||||
version = navigator.plugins[ 'Shockwave Flash' ];
|
|
||||||
version = version.description;
|
|
||||||
} catch ( ex ) {
|
|
||||||
try {
|
|
||||||
version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash')
|
|
||||||
.GetVariable('$version');
|
|
||||||
} catch ( ex2 ) {
|
|
||||||
version = '0.0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
version = version.match( /\d+/g );
|
|
||||||
return parseFloat( version[ 0 ] + '.' + version[ 1 ], 10 );
|
|
||||||
} )(),
|
|
||||||
|
|
||||||
supportTransition = (function(){
|
|
||||||
var s = document.createElement('p').style,
|
|
||||||
r = 'transition' in s ||
|
|
||||||
'WebkitTransition' in s ||
|
|
||||||
'MozTransition' in s ||
|
|
||||||
'msTransition' in s ||
|
|
||||||
'OTransition' in s;
|
|
||||||
s = null;
|
|
||||||
return r;
|
|
||||||
})(),
|
|
||||||
|
|
||||||
// WebUploader实例
|
|
||||||
uploader;
|
|
||||||
|
|
||||||
if ( !WebUploader.Uploader.support('flash') && WebUploader.browser.ie ) {
|
|
||||||
|
|
||||||
// flash 安装了但是版本过低。
|
|
||||||
if (flashVersion) {
|
|
||||||
(function(container) {
|
|
||||||
window['expressinstallcallback'] = function( state ) {
|
|
||||||
switch(state) {
|
|
||||||
case 'Download.Cancelled':
|
|
||||||
alert('您取消了更新!')
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'Download.Failed':
|
|
||||||
alert('安装失败')
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
alert('安装已成功,请刷新!');
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
delete window['expressinstallcallback'];
|
|
||||||
};
|
|
||||||
|
|
||||||
var swf = './expressInstall.swf';
|
|
||||||
// insert flash object
|
|
||||||
var html = '<object type="application/' +
|
|
||||||
'x-shockwave-flash" data="' + swf + '" ';
|
|
||||||
|
|
||||||
if (WebUploader.browser.ie) {
|
|
||||||
html += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';
|
|
||||||
}
|
|
||||||
|
|
||||||
html += 'width="100%" height="100%" style="outline:0">' +
|
|
||||||
'<param name="movie" value="' + swf + '" />' +
|
|
||||||
'<param name="wmode" value="transparent" />' +
|
|
||||||
'<param name="allowscriptaccess" value="always" />' +
|
|
||||||
'</object>';
|
|
||||||
|
|
||||||
container.html(html);
|
|
||||||
|
|
||||||
})($wrap);
|
|
||||||
|
|
||||||
// 压根就没有安转。
|
|
||||||
} else {
|
|
||||||
$wrap.html('<a href="http://www.adobe.com/go/getflashplayer" target="_blank" border="0"><img alt="get flash player" src="http://www.adobe.com/macromedia/style_guide/images/160x41_Get_Flash_Player.jpg" /></a>');
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
} else if (!WebUploader.Uploader.support()) {
|
|
||||||
alert( 'Web Uploader 不支持您的浏览器!');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 实例化
|
|
||||||
uploader = WebUploader.create({
|
|
||||||
pick: {
|
|
||||||
id: '#filePicker',
|
|
||||||
label: '点击选择图片'
|
|
||||||
},
|
|
||||||
formData: {
|
|
||||||
uid: 123
|
|
||||||
},
|
|
||||||
dnd: '#dndArea',
|
|
||||||
paste: '#uploader',
|
|
||||||
swf: '../../dist/Uploader.swf',
|
|
||||||
chunked: false,
|
|
||||||
chunkSize: 512 * 1024,
|
|
||||||
server: '../../server/fileupload.php',
|
|
||||||
// runtimeOrder: 'flash',
|
|
||||||
|
|
||||||
// accept: {
|
|
||||||
// title: 'Images',
|
|
||||||
// extensions: 'gif,jpg,jpeg,bmp,png',
|
|
||||||
// mimeTypes: 'image/*'
|
|
||||||
// },
|
|
||||||
|
|
||||||
// 禁掉全局的拖拽功能。这样不会出现图片拖进页面的时候,把图片打开。
|
|
||||||
disableGlobalDnd: true,
|
|
||||||
fileNumLimit: 300,
|
|
||||||
fileSizeLimit: 200 * 1024 * 1024, // 200 M
|
|
||||||
fileSingleSizeLimit: 50 * 1024 * 1024 // 50 M
|
|
||||||
});
|
|
||||||
|
|
||||||
// 拖拽时不接受 js, txt 文件。
|
|
||||||
uploader.on( 'dndAccept', function( items ) {
|
|
||||||
var denied = false,
|
|
||||||
len = items.length,
|
|
||||||
i = 0,
|
|
||||||
// 修改js类型
|
|
||||||
unAllowed = 'text/plain;application/javascript ';
|
|
||||||
|
|
||||||
for ( ; i < len; i++ ) {
|
|
||||||
// 如果在列表里面
|
|
||||||
if ( ~unAllowed.indexOf( items[ i ].type ) ) {
|
|
||||||
denied = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return !denied;
|
|
||||||
});
|
|
||||||
|
|
||||||
// uploader.on('filesQueued', function() {
|
|
||||||
// uploader.sort(function( a, b ) {
|
|
||||||
// if ( a.name < b.name )
|
|
||||||
// return -1;
|
|
||||||
// if ( a.name > b.name )
|
|
||||||
// return 1;
|
|
||||||
// return 0;
|
|
||||||
// });
|
|
||||||
// });
|
|
||||||
|
|
||||||
// 添加“添加文件”的按钮,
|
|
||||||
uploader.addButton({
|
|
||||||
id: '#filePicker2',
|
|
||||||
label: '继续添加'
|
|
||||||
});
|
|
||||||
|
|
||||||
uploader.on('ready', function() {
|
|
||||||
window.uploader = uploader;
|
|
||||||
});
|
|
||||||
|
|
||||||
// 当有文件添加进来时执行,负责view的创建
|
|
||||||
function addFile( file ) {
|
|
||||||
var $li = $( '<li id="' + file.id + '">' +
|
|
||||||
'<p class="title">' + file.name + '</p>' +
|
|
||||||
'<p class="imgWrap"></p>'+
|
|
||||||
'<p class="progress"><span></span></p>' +
|
|
||||||
'</li>' ),
|
|
||||||
|
|
||||||
$btns = $('<div class="file-panel">' +
|
|
||||||
'<span class="cancel">删除</span>' +
|
|
||||||
'<span class="rotateRight">向右旋转</span>' +
|
|
||||||
'<span class="rotateLeft">向左旋转</span></div>').appendTo( $li ),
|
|
||||||
$prgress = $li.find('p.progress span'),
|
|
||||||
$wrap = $li.find( 'p.imgWrap' ),
|
|
||||||
$info = $('<p class="error"></p>'),
|
|
||||||
|
|
||||||
showError = function( code ) {
|
|
||||||
switch( code ) {
|
|
||||||
case 'exceed_size':
|
|
||||||
text = '文件大小超出';
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'interrupt':
|
|
||||||
text = '上传暂停';
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
text = '上传失败,请重试';
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
$info.text( text ).appendTo( $li );
|
|
||||||
};
|
|
||||||
|
|
||||||
if ( file.getStatus() === 'invalid' ) {
|
|
||||||
showError( file.statusText );
|
|
||||||
} else {
|
|
||||||
// @todo lazyload
|
|
||||||
$wrap.text( '预览中' );
|
|
||||||
uploader.makeThumb( file, function( error, src ) {
|
|
||||||
var img;
|
|
||||||
|
|
||||||
if ( error ) {
|
|
||||||
$wrap.text( '不能预览' );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( isSupportBase64 ) {
|
|
||||||
img = $('<img src="'+src+'">');
|
|
||||||
$wrap.empty().append( img );
|
|
||||||
} else {
|
|
||||||
$.ajax('../../server/preview.php', {
|
|
||||||
method: 'POST',
|
|
||||||
data: src,
|
|
||||||
dataType:'json'
|
|
||||||
}).done(function( response ) {
|
|
||||||
if (response.result) {
|
|
||||||
img = $('<img src="'+response.result+'">');
|
|
||||||
$wrap.empty().append( img );
|
|
||||||
} else {
|
|
||||||
$wrap.text("预览出错");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, thumbnailWidth, thumbnailHeight );
|
|
||||||
|
|
||||||
percentages[ file.id ] = [ file.size, 0 ];
|
|
||||||
file.rotation = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
file.on('statuschange', function( cur, prev ) {
|
|
||||||
if ( prev === 'progress' ) {
|
|
||||||
$prgress.hide().width(0);
|
|
||||||
} else if ( prev === 'queued' ) {
|
|
||||||
$li.off( 'mouseenter mouseleave' );
|
|
||||||
$btns.remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 成功
|
|
||||||
if ( cur === 'error' || cur === 'invalid' ) {
|
|
||||||
console.log( file.statusText );
|
|
||||||
showError( file.statusText );
|
|
||||||
percentages[ file.id ][ 1 ] = 1;
|
|
||||||
} else if ( cur === 'interrupt' ) {
|
|
||||||
showError( 'interrupt' );
|
|
||||||
} else if ( cur === 'queued' ) {
|
|
||||||
percentages[ file.id ][ 1 ] = 0;
|
|
||||||
} else if ( cur === 'progress' ) {
|
|
||||||
$info.remove();
|
|
||||||
$prgress.css('display', 'block');
|
|
||||||
} else if ( cur === 'complete' ) {
|
|
||||||
$li.append( '<span class="success"></span>' );
|
|
||||||
}
|
|
||||||
|
|
||||||
$li.removeClass( 'state-' + prev ).addClass( 'state-' + cur );
|
|
||||||
});
|
|
||||||
|
|
||||||
$li.on( 'mouseenter', function() {
|
|
||||||
$btns.stop().animate({height: 30});
|
|
||||||
});
|
|
||||||
|
|
||||||
$li.on( 'mouseleave', function() {
|
|
||||||
$btns.stop().animate({height: 0});
|
|
||||||
});
|
|
||||||
|
|
||||||
$btns.on( 'click', 'span', function() {
|
|
||||||
var index = $(this).index(),
|
|
||||||
deg;
|
|
||||||
|
|
||||||
switch ( index ) {
|
|
||||||
case 0:
|
|
||||||
uploader.removeFile( file );
|
|
||||||
return;
|
|
||||||
|
|
||||||
case 1:
|
|
||||||
file.rotation += 90;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
file.rotation -= 90;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( supportTransition ) {
|
|
||||||
deg = 'rotate(' + file.rotation + 'deg)';
|
|
||||||
$wrap.css({
|
|
||||||
'-webkit-transform': deg,
|
|
||||||
'-mos-transform': deg,
|
|
||||||
'-o-transform': deg,
|
|
||||||
'transform': deg
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
$wrap.css( 'filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ (~~((file.rotation/90)%4 + 4)%4) +')');
|
|
||||||
// use jquery animate to rotation
|
|
||||||
// $({
|
|
||||||
// rotation: rotation
|
|
||||||
// }).animate({
|
|
||||||
// rotation: file.rotation
|
|
||||||
// }, {
|
|
||||||
// easing: 'linear',
|
|
||||||
// step: function( now ) {
|
|
||||||
// now = now * Math.PI / 180;
|
|
||||||
|
|
||||||
// var cos = Math.cos( now ),
|
|
||||||
// sin = Math.sin( now );
|
|
||||||
|
|
||||||
// $wrap.css( 'filter', "progid:DXImageTransform.Microsoft.Matrix(M11=" + cos + ",M12=" + (-sin) + ",M21=" + sin + ",M22=" + cos + ",SizingMethod='auto expand')");
|
|
||||||
// }
|
|
||||||
// });
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
$li.appendTo( $queue );
|
|
||||||
}
|
|
||||||
|
|
||||||
// 负责view的销毁
|
|
||||||
function removeFile( file ) {
|
|
||||||
var $li = $('#'+file.id);
|
|
||||||
|
|
||||||
delete percentages[ file.id ];
|
|
||||||
updateTotalProgress();
|
|
||||||
$li.off().find('.file-panel').off().end().remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateTotalProgress() {
|
|
||||||
var loaded = 0,
|
|
||||||
total = 0,
|
|
||||||
spans = $progress.children(),
|
|
||||||
percent;
|
|
||||||
|
|
||||||
$.each( percentages, function( k, v ) {
|
|
||||||
total += v[ 0 ];
|
|
||||||
loaded += v[ 0 ] * v[ 1 ];
|
|
||||||
} );
|
|
||||||
|
|
||||||
percent = total ? loaded / total : 0;
|
|
||||||
|
|
||||||
|
|
||||||
spans.eq( 0 ).text( Math.round( percent * 100 ) + '%' );
|
|
||||||
spans.eq( 1 ).css( 'width', Math.round( percent * 100 ) + '%' );
|
|
||||||
updateStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateStatus() {
|
|
||||||
var text = '', stats;
|
|
||||||
|
|
||||||
if ( state === 'ready' ) {
|
|
||||||
text = '选中' + fileCount + '张图片,共' +
|
|
||||||
WebUploader.formatSize( fileSize ) + '。';
|
|
||||||
} else if ( state === 'confirm' ) {
|
|
||||||
stats = uploader.getStats();
|
|
||||||
if ( stats.uploadFailNum ) {
|
|
||||||
text = '已成功上传' + stats.successNum+ '张照片至XX相册,'+
|
|
||||||
stats.uploadFailNum + '张照片上传失败,<a class="retry" href="#">重新上传</a>失败图片或<a class="ignore" href="#">忽略</a>'
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
stats = uploader.getStats();
|
|
||||||
text = '共' + fileCount + '张(' +
|
|
||||||
WebUploader.formatSize( fileSize ) +
|
|
||||||
'),已上传' + stats.successNum + '张';
|
|
||||||
|
|
||||||
if ( stats.uploadFailNum ) {
|
|
||||||
text += ',失败' + stats.uploadFailNum + '张';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$info.html( text );
|
|
||||||
}
|
|
||||||
|
|
||||||
function setState( val ) {
|
|
||||||
var file, stats;
|
|
||||||
|
|
||||||
if ( val === state ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$upload.removeClass( 'state-' + state );
|
|
||||||
$upload.addClass( 'state-' + val );
|
|
||||||
state = val;
|
|
||||||
|
|
||||||
switch ( state ) {
|
|
||||||
case 'pedding':
|
|
||||||
$placeHolder.removeClass( 'element-invisible' );
|
|
||||||
$queue.hide();
|
|
||||||
$statusBar.addClass( 'element-invisible' );
|
|
||||||
uploader.refresh();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'ready':
|
|
||||||
$placeHolder.addClass( 'element-invisible' );
|
|
||||||
$( '#filePicker2' ).removeClass( 'element-invisible');
|
|
||||||
$queue.show();
|
|
||||||
$statusBar.removeClass('element-invisible');
|
|
||||||
uploader.refresh();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'uploading':
|
|
||||||
$( '#filePicker2' ).addClass( 'element-invisible' );
|
|
||||||
$progress.show();
|
|
||||||
$upload.text( '暂停上传' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'paused':
|
|
||||||
$progress.show();
|
|
||||||
$upload.text( '继续上传' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'confirm':
|
|
||||||
$progress.hide();
|
|
||||||
$( '#filePicker2' ).removeClass( 'element-invisible' );
|
|
||||||
$upload.text( '开始上传' );
|
|
||||||
|
|
||||||
stats = uploader.getStats();
|
|
||||||
if ( stats.successNum && !stats.uploadFailNum ) {
|
|
||||||
setState( 'finish' );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'finish':
|
|
||||||
stats = uploader.getStats();
|
|
||||||
if ( stats.successNum ) {
|
|
||||||
alert( '上传成功' );
|
|
||||||
} else {
|
|
||||||
// 没有成功的图片,重设
|
|
||||||
state = 'done';
|
|
||||||
location.reload();
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
updateStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
uploader.onUploadProgress = function( file, percentage ) {
|
|
||||||
var $li = $('#'+file.id),
|
|
||||||
$percent = $li.find('.progress span');
|
|
||||||
|
|
||||||
$percent.css( 'width', percentage * 100 + '%' );
|
|
||||||
percentages[ file.id ][ 1 ] = percentage;
|
|
||||||
updateTotalProgress();
|
|
||||||
};
|
|
||||||
|
|
||||||
uploader.onFileQueued = function( file ) {
|
|
||||||
fileCount++;
|
|
||||||
fileSize += file.size;
|
|
||||||
|
|
||||||
if ( fileCount === 1 ) {
|
|
||||||
$placeHolder.addClass( 'element-invisible' );
|
|
||||||
$statusBar.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
addFile( file );
|
|
||||||
setState( 'ready' );
|
|
||||||
updateTotalProgress();
|
|
||||||
};
|
|
||||||
|
|
||||||
uploader.onFileDequeued = function( file ) {
|
|
||||||
fileCount--;
|
|
||||||
fileSize -= file.size;
|
|
||||||
|
|
||||||
if ( !fileCount ) {
|
|
||||||
setState( 'pedding' );
|
|
||||||
}
|
|
||||||
|
|
||||||
removeFile( file );
|
|
||||||
updateTotalProgress();
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
uploader.on( 'all', function( type ) {
|
|
||||||
var stats;
|
|
||||||
switch( type ) {
|
|
||||||
case 'uploadFinished':
|
|
||||||
setState( 'confirm' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'startUpload':
|
|
||||||
setState( 'uploading' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'stopUpload':
|
|
||||||
setState( 'paused' );
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
uploader.onError = function( code ) {
|
|
||||||
alert( 'Eroor: ' + code );
|
|
||||||
};
|
|
||||||
|
|
||||||
$upload.on('click', function() {
|
|
||||||
if ( $(this).hasClass( 'disabled' ) ) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( state === 'ready' ) {
|
|
||||||
uploader.upload();
|
|
||||||
} else if ( state === 'paused' ) {
|
|
||||||
uploader.upload();
|
|
||||||
} else if ( state === 'uploading' ) {
|
|
||||||
uploader.stop();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$info.on( 'click', '.retry', function() {
|
|
||||||
uploader.retry();
|
|
||||||
} );
|
|
||||||
|
|
||||||
$info.on( 'click', '.ignore', function() {
|
|
||||||
alert( 'todo' );
|
|
||||||
} );
|
|
||||||
|
|
||||||
$upload.addClass( 'state-' + state );
|
|
||||||
updateTotalProgress();
|
|
||||||
});
|
|
||||||
|
|
||||||
})( jQuery );
|
|
@ -1,435 +0,0 @@
|
|||||||
/* ----------------Reset Css--------------------- */
|
|
||||||
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
|
||||||
a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp,
|
|
||||||
small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li,
|
|
||||||
fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td,
|
|
||||||
article, aside, canvas, details, figcaption, figure, footer, header, hgroup, menu, nav, section, summary,
|
|
||||||
time, mark, audio, video, input {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
border: none;
|
|
||||||
outline: 0;
|
|
||||||
font-size: 100%;
|
|
||||||
font: inherit;
|
|
||||||
vertical-align: baseline;
|
|
||||||
}
|
|
||||||
|
|
||||||
html, body, form, fieldset, p, div, h1, h2, h3, h4, h5, h6 {
|
|
||||||
-webkit-text-size-adjust: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family: arial, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
ol, ul {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote, q {
|
|
||||||
quotes: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote:before, blockquote:after, q:before, q:after {
|
|
||||||
content: '';
|
|
||||||
content: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
ins {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
del {
|
|
||||||
text-decoration: line-through;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
border-collapse: collapse;
|
|
||||||
border-spacing: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ------------ */
|
|
||||||
#wrapper {
|
|
||||||
width: 980px;
|
|
||||||
margin: 0 auto;
|
|
||||||
|
|
||||||
margin: 1em;
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#container {
|
|
||||||
border: 1px solid #dadada;
|
|
||||||
color: #838383;
|
|
||||||
font-size: 12px;
|
|
||||||
margin-top: 10px;
|
|
||||||
background-color: #FFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .queueList {
|
|
||||||
margin: 20px;
|
|
||||||
/*diy*/
|
|
||||||
margin:0;
|
|
||||||
max-height: 400px;
|
|
||||||
overflow: auto;
|
|
||||||
padding-right:0px;
|
|
||||||
padding:6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.element-invisible {
|
|
||||||
position: absolute !important;
|
|
||||||
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
|
|
||||||
clip: rect(1px,1px,1px,1px);
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .placeholder {
|
|
||||||
border: 3px dashed #e6e6e6;
|
|
||||||
min-height: 238px;
|
|
||||||
padding-top: 158px;
|
|
||||||
text-align: center;
|
|
||||||
background: url(./image.png) center 93px no-repeat;
|
|
||||||
color: #cccccc;
|
|
||||||
font-size: 18px;
|
|
||||||
position: relative;
|
|
||||||
/*diy*/
|
|
||||||
min-height: 196px;
|
|
||||||
margin:20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .placeholder .webuploader-pick {
|
|
||||||
font-size: 18px;
|
|
||||||
background: #00b7ee;
|
|
||||||
border-radius: 3px;
|
|
||||||
line-height: 44px;
|
|
||||||
padding: 0 30px;
|
|
||||||
color: #fff;
|
|
||||||
display: inline-block;
|
|
||||||
margin: 20px auto;
|
|
||||||
cursor: pointer;
|
|
||||||
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .placeholder .webuploader-pick-hover {
|
|
||||||
background: #00a2d4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .placeholder .flashTip {
|
|
||||||
color: #666666;
|
|
||||||
font-size: 12px;
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
bottom: 20px;
|
|
||||||
}
|
|
||||||
#uploader .placeholder .flashTip a {
|
|
||||||
color: #0785d1;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
#uploader .placeholder .flashTip a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .placeholder.webuploader-dnd-over {
|
|
||||||
border-color: #999999;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .placeholder.webuploader-dnd-over.webuploader-dnd-denied {
|
|
||||||
border-color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist {
|
|
||||||
list-style: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist:after {
|
|
||||||
content: '';
|
|
||||||
display: block;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li {
|
|
||||||
width: 116px;
|
|
||||||
height: 116px;
|
|
||||||
background: url(./bg.png) no-repeat;
|
|
||||||
text-align: center;
|
|
||||||
margin: 0 8px 20px 0;
|
|
||||||
position: relative;
|
|
||||||
display: inline;
|
|
||||||
float: left;
|
|
||||||
overflow: hidden;
|
|
||||||
font-size: 12px;
|
|
||||||
/*diy*/
|
|
||||||
margin:6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li p.log {
|
|
||||||
position: relative;
|
|
||||||
top: -45px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li p.title {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow : ellipsis;
|
|
||||||
top: 5px;
|
|
||||||
text-indent: 5px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li p.progress {
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 8px;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 50;
|
|
||||||
}
|
|
||||||
#uploader .filelist li p.progress span {
|
|
||||||
display: none;
|
|
||||||
overflow: hidden;
|
|
||||||
width: 0;
|
|
||||||
height: 100%;
|
|
||||||
background: #1483d8 url(./progress.png) repeat-x;
|
|
||||||
|
|
||||||
-webit-transition: width 200ms linear;
|
|
||||||
-moz-transition: width 200ms linear;
|
|
||||||
-o-transition: width 200ms linear;
|
|
||||||
-ms-transition: width 200ms linear;
|
|
||||||
transition: width 200ms linear;
|
|
||||||
|
|
||||||
-webkit-animation: progressmove 2s linear infinite;
|
|
||||||
-moz-animation: progressmove 2s linear infinite;
|
|
||||||
-o-animation: progressmove 2s linear infinite;
|
|
||||||
-ms-animation: progressmove 2s linear infinite;
|
|
||||||
animation: progressmove 2s linear infinite;
|
|
||||||
|
|
||||||
-webkit-transform: translateZ(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@-webkit-keyframes progressmove {
|
|
||||||
0% {
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
background-position: 17px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-moz-keyframes progressmove {
|
|
||||||
0% {
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
background-position: 17px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes progressmove {
|
|
||||||
0% {
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
background-position: 17px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li p.imgWrap {
|
|
||||||
position: relative;
|
|
||||||
z-index: 2;
|
|
||||||
line-height: 116px;
|
|
||||||
vertical-align: middle;
|
|
||||||
overflow: hidden;
|
|
||||||
width: 116px;
|
|
||||||
height: 116px;
|
|
||||||
|
|
||||||
-webkit-transform-origin: 50% 50%;
|
|
||||||
-moz-transform-origin: 50% 50%;
|
|
||||||
-o-transform-origin: 50% 50%;
|
|
||||||
-ms-transform-origin: 50% 50%;
|
|
||||||
transform-origin: 50% 50%;
|
|
||||||
|
|
||||||
-webit-transition: 200ms ease-out;
|
|
||||||
-moz-transition: 200ms ease-out;
|
|
||||||
-o-transition: 200ms ease-out;
|
|
||||||
-ms-transition: 200ms ease-out;
|
|
||||||
transition: 200ms ease-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li img {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li p.error {
|
|
||||||
background: #f43838;
|
|
||||||
color: #fff;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
height: 28px;
|
|
||||||
line-height: 28px;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist li .success {
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
height: 40px;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 200;
|
|
||||||
background: url(./success.png) no-repeat right bottom;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist div.file-panel {
|
|
||||||
position: absolute;
|
|
||||||
height: 0;
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr='#80000000', endColorstr='#80000000')\0;
|
|
||||||
background: rgba( 0, 0, 0, 0.5 );
|
|
||||||
width: 100%;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist div.file-panel span {
|
|
||||||
width: 24px;
|
|
||||||
height: 24px;
|
|
||||||
display: inline;
|
|
||||||
float: right;
|
|
||||||
text-indent: -9999px;
|
|
||||||
overflow: hidden;
|
|
||||||
background: url(./icons.png) no-repeat;
|
|
||||||
margin: 5px 1px 1px;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist div.file-panel span.rotateLeft {
|
|
||||||
background-position: 0 -24px;
|
|
||||||
}
|
|
||||||
#uploader .filelist div.file-panel span.rotateLeft:hover {
|
|
||||||
background-position: 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist div.file-panel span.rotateRight {
|
|
||||||
background-position: -24px -24px;
|
|
||||||
}
|
|
||||||
#uploader .filelist div.file-panel span.rotateRight:hover {
|
|
||||||
background-position: -24px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .filelist div.file-panel span.cancel {
|
|
||||||
background-position: -48px -24px;
|
|
||||||
}
|
|
||||||
#uploader .filelist div.file-panel span.cancel:hover {
|
|
||||||
background-position: -48px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .statusBar {
|
|
||||||
height: 63px;
|
|
||||||
border-top: 1px solid #dadada;
|
|
||||||
padding: 0 20px;
|
|
||||||
line-height: 63px;
|
|
||||||
vertical-align: middle;
|
|
||||||
position: relative;
|
|
||||||
/*diy*/
|
|
||||||
position:fixed;
|
|
||||||
bottom:0;
|
|
||||||
width:760px;
|
|
||||||
background: #fff;
|
|
||||||
z-index: 9999;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .statusBar .progress {
|
|
||||||
border: 1px solid #1483d8;
|
|
||||||
width: 198px;
|
|
||||||
background: #fff;
|
|
||||||
height: 18px;
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
line-height: 20px;
|
|
||||||
color: #6dbfff;
|
|
||||||
position: relative;
|
|
||||||
margin-right: 10px;
|
|
||||||
|
|
||||||
}
|
|
||||||
#uploader .statusBar .progress span.percentage {
|
|
||||||
width: 0;
|
|
||||||
height: 100%;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
background: #1483d8;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
#uploader .statusBar .progress span.text {
|
|
||||||
position: relative;
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .statusBar .info {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #666666;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .statusBar .btns {
|
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
right: 20px;
|
|
||||||
line-height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#filePicker2 {
|
|
||||||
display: inline-block;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .statusBar .btns .webuploader-pick,
|
|
||||||
#uploader .statusBar .btns .uploadBtn,
|
|
||||||
#uploader .statusBar .btns .uploadBtn.state-uploading,
|
|
||||||
#uploader .statusBar .btns .uploadBtn.state-paused {
|
|
||||||
background: #ffffff;
|
|
||||||
border: 1px solid #cfcfcf;
|
|
||||||
color: #565656;
|
|
||||||
padding: 0 18px;
|
|
||||||
display: inline-block;
|
|
||||||
border-radius: 3px;
|
|
||||||
margin-left: 10px;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 14px;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
#uploader .statusBar .btns .webuploader-pick-hover,
|
|
||||||
#uploader .statusBar .btns .uploadBtn:hover,
|
|
||||||
#uploader .statusBar .btns .uploadBtn.state-uploading:hover,
|
|
||||||
#uploader .statusBar .btns .uploadBtn.state-paused:hover {
|
|
||||||
background: #f0f0f0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .statusBar .btns .uploadBtn {
|
|
||||||
background: #00b7ee;
|
|
||||||
color: #fff;
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
#uploader .statusBar .btns .uploadBtn:hover {
|
|
||||||
background: #00a2d4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#uploader .statusBar .btns .uploadBtn.disabled {
|
|
||||||
pointer-events: none;
|
|
||||||
opacity: 0.6;
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
.webuploader-container {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.webuploader-element-invisible {
|
|
||||||
position: absolute !important;
|
|
||||||
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
|
|
||||||
clip: rect(1px,1px,1px,1px);
|
|
||||||
}
|
|
||||||
.webuploader-pick {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
cursor: pointer;
|
|
||||||
background: #00b7ee;
|
|
||||||
padding: 10px 15px;
|
|
||||||
color: #fff;
|
|
||||||
text-align: center;
|
|
||||||
border-radius: 3px;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.webuploader-pick-hover {
|
|
||||||
background: #00a2d4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.webuploader-pick-disable {
|
|
||||||
opacity: 0.6;
|
|
||||||
pointer-events:none;
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
2
vendor/autoload.php
vendored
2
vendor/autoload.php
vendored
@ -4,4 +4,4 @@
|
|||||||
|
|
||||||
require_once __DIR__ . '/composer/autoload_real.php';
|
require_once __DIR__ . '/composer/autoload_real.php';
|
||||||
|
|
||||||
return ComposerAutoloaderInitea274b2de9c003580ff10c3539ba8dd6::getLoader();
|
return ComposerAutoloaderInite6ff642f5d0a514e9d0fd7f1fb6369db::getLoader();
|
||||||
|
14
vendor/composer/autoload_real.php
vendored
14
vendor/composer/autoload_real.php
vendored
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
// autoload_real.php @generated by Composer
|
// autoload_real.php @generated by Composer
|
||||||
|
|
||||||
class ComposerAutoloaderInitea274b2de9c003580ff10c3539ba8dd6
|
class ComposerAutoloaderInite6ff642f5d0a514e9d0fd7f1fb6369db
|
||||||
{
|
{
|
||||||
private static $loader;
|
private static $loader;
|
||||||
|
|
||||||
@ -19,15 +19,15 @@ class ComposerAutoloaderInitea274b2de9c003580ff10c3539ba8dd6
|
|||||||
return self::$loader;
|
return self::$loader;
|
||||||
}
|
}
|
||||||
|
|
||||||
spl_autoload_register(array('ComposerAutoloaderInitea274b2de9c003580ff10c3539ba8dd6', 'loadClassLoader'), true, true);
|
spl_autoload_register(array('ComposerAutoloaderInite6ff642f5d0a514e9d0fd7f1fb6369db', 'loadClassLoader'), true, true);
|
||||||
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
||||||
spl_autoload_unregister(array('ComposerAutoloaderInitea274b2de9c003580ff10c3539ba8dd6', 'loadClassLoader'));
|
spl_autoload_unregister(array('ComposerAutoloaderInite6ff642f5d0a514e9d0fd7f1fb6369db', 'loadClassLoader'));
|
||||||
|
|
||||||
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
|
||||||
if ($useStaticLoader) {
|
if ($useStaticLoader) {
|
||||||
require_once __DIR__ . '/autoload_static.php';
|
require_once __DIR__ . '/autoload_static.php';
|
||||||
|
|
||||||
call_user_func(\Composer\Autoload\ComposerStaticInitea274b2de9c003580ff10c3539ba8dd6::getInitializer($loader));
|
call_user_func(\Composer\Autoload\ComposerStaticInite6ff642f5d0a514e9d0fd7f1fb6369db::getInitializer($loader));
|
||||||
} else {
|
} else {
|
||||||
$map = require __DIR__ . '/autoload_namespaces.php';
|
$map = require __DIR__ . '/autoload_namespaces.php';
|
||||||
foreach ($map as $namespace => $path) {
|
foreach ($map as $namespace => $path) {
|
||||||
@ -48,19 +48,19 @@ class ComposerAutoloaderInitea274b2de9c003580ff10c3539ba8dd6
|
|||||||
$loader->register(true);
|
$loader->register(true);
|
||||||
|
|
||||||
if ($useStaticLoader) {
|
if ($useStaticLoader) {
|
||||||
$includeFiles = Composer\Autoload\ComposerStaticInitea274b2de9c003580ff10c3539ba8dd6::$files;
|
$includeFiles = Composer\Autoload\ComposerStaticInite6ff642f5d0a514e9d0fd7f1fb6369db::$files;
|
||||||
} else {
|
} else {
|
||||||
$includeFiles = require __DIR__ . '/autoload_files.php';
|
$includeFiles = require __DIR__ . '/autoload_files.php';
|
||||||
}
|
}
|
||||||
foreach ($includeFiles as $fileIdentifier => $file) {
|
foreach ($includeFiles as $fileIdentifier => $file) {
|
||||||
composerRequireea274b2de9c003580ff10c3539ba8dd6($fileIdentifier, $file);
|
composerRequiree6ff642f5d0a514e9d0fd7f1fb6369db($fileIdentifier, $file);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $loader;
|
return $loader;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function composerRequireea274b2de9c003580ff10c3539ba8dd6($fileIdentifier, $file)
|
function composerRequiree6ff642f5d0a514e9d0fd7f1fb6369db($fileIdentifier, $file)
|
||||||
{
|
{
|
||||||
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
|
||||||
require $file;
|
require $file;
|
||||||
|
8
vendor/composer/autoload_static.php
vendored
8
vendor/composer/autoload_static.php
vendored
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
namespace Composer\Autoload;
|
namespace Composer\Autoload;
|
||||||
|
|
||||||
class ComposerStaticInitea274b2de9c003580ff10c3539ba8dd6
|
class ComposerStaticInite6ff642f5d0a514e9d0fd7f1fb6369db
|
||||||
{
|
{
|
||||||
public static $files = array (
|
public static $files = array (
|
||||||
'841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php',
|
'841780ea2e1d6545ea3a253239d59c05' => __DIR__ . '/..' . '/qiniu/php-sdk/src/Qiniu/functions.php',
|
||||||
@ -314,9 +314,9 @@ class ComposerStaticInitea274b2de9c003580ff10c3539ba8dd6
|
|||||||
public static function getInitializer(ClassLoader $loader)
|
public static function getInitializer(ClassLoader $loader)
|
||||||
{
|
{
|
||||||
return \Closure::bind(function () use ($loader) {
|
return \Closure::bind(function () use ($loader) {
|
||||||
$loader->prefixLengthsPsr4 = ComposerStaticInitea274b2de9c003580ff10c3539ba8dd6::$prefixLengthsPsr4;
|
$loader->prefixLengthsPsr4 = ComposerStaticInite6ff642f5d0a514e9d0fd7f1fb6369db::$prefixLengthsPsr4;
|
||||||
$loader->prefixDirsPsr4 = ComposerStaticInitea274b2de9c003580ff10c3539ba8dd6::$prefixDirsPsr4;
|
$loader->prefixDirsPsr4 = ComposerStaticInite6ff642f5d0a514e9d0fd7f1fb6369db::$prefixDirsPsr4;
|
||||||
$loader->classMap = ComposerStaticInitea274b2de9c003580ff10c3539ba8dd6::$classMap;
|
$loader->classMap = ComposerStaticInite6ff642f5d0a514e9d0fd7f1fb6369db::$classMap;
|
||||||
|
|
||||||
}, null, ClassLoader::class);
|
}, null, ClassLoader::class);
|
||||||
}
|
}
|
||||||
|
8
vendor/composer/installed.json
vendored
8
vendor/composer/installed.json
vendored
@ -401,12 +401,12 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/zoujingli/ThinkLibrary.git",
|
"url": "https://github.com/zoujingli/ThinkLibrary.git",
|
||||||
"reference": "0f2403c5d7c0541257e14092ae733dd77e6a17a5"
|
"reference": "a485ab5d1a04a87959e9d4402c1fa98290dcb3aa"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/0f2403c5d7c0541257e14092ae733dd77e6a17a5",
|
"url": "https://api.github.com/repos/zoujingli/ThinkLibrary/zipball/a485ab5d1a04a87959e9d4402c1fa98290dcb3aa",
|
||||||
"reference": "0f2403c5d7c0541257e14092ae733dd77e6a17a5",
|
"reference": "a485ab5d1a04a87959e9d4402c1fa98290dcb3aa",
|
||||||
"shasum": "",
|
"shasum": "",
|
||||||
"mirrors": [
|
"mirrors": [
|
||||||
{
|
{
|
||||||
@ -425,7 +425,7 @@
|
|||||||
"qiniu/php-sdk": "^7.2",
|
"qiniu/php-sdk": "^7.2",
|
||||||
"topthink/framework": "5.1.*"
|
"topthink/framework": "5.1.*"
|
||||||
},
|
},
|
||||||
"time": "2019-08-29T01:24:13+00:00",
|
"time": "2019-09-10T09:46:52+00:00",
|
||||||
"type": "library",
|
"type": "library",
|
||||||
"installation-source": "dist",
|
"installation-source": "dist",
|
||||||
"autoload": {
|
"autoload": {
|
||||||
|
5
vendor/zoujingli/think-library/src/File.php
vendored
5
vendor/zoujingli/think-library/src/File.php
vendored
@ -15,6 +15,9 @@
|
|||||||
|
|
||||||
namespace library;
|
namespace library;
|
||||||
|
|
||||||
|
use library\driver\Local;
|
||||||
|
use library\driver\Oss;
|
||||||
|
use library\driver\Qiniu;
|
||||||
use library\tools\Options;
|
use library\tools\Options;
|
||||||
use think\Exception;
|
use think\Exception;
|
||||||
use think\facade\Log;
|
use think\facade\Log;
|
||||||
@ -99,7 +102,7 @@ class File
|
|||||||
/**
|
/**
|
||||||
* 设置文件驱动名称
|
* 设置文件驱动名称
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @return \library\driver\Local
|
* @return Local|Qiniu|Oss
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public static function instance($name)
|
public static function instance($name)
|
||||||
|
@ -19,6 +19,7 @@ use library\File;
|
|||||||
use OSS\Model\CorsConfig;
|
use OSS\Model\CorsConfig;
|
||||||
use OSS\Model\CorsRule;
|
use OSS\Model\CorsRule;
|
||||||
use OSS\OssClient;
|
use OSS\OssClient;
|
||||||
|
use think\facade\Request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AliOss文件存储
|
* AliOss文件存储
|
||||||
@ -70,7 +71,7 @@ class Oss extends File
|
|||||||
*/
|
*/
|
||||||
public function upload()
|
public function upload()
|
||||||
{
|
{
|
||||||
$protocol = request()->isSsl() ? 'https' : 'http';
|
$protocol = Request::isSsl() ? 'https' : 'http';
|
||||||
return "{$protocol}://" . self::$config->get('storage_oss_domain');
|
return "{$protocol}://" . self::$config->get('storage_oss_domain');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ use library\File;
|
|||||||
use Qiniu\Storage\BucketManager;
|
use Qiniu\Storage\BucketManager;
|
||||||
use Qiniu\Storage\UploadManager;
|
use Qiniu\Storage\UploadManager;
|
||||||
use think\facade\Log;
|
use think\facade\Log;
|
||||||
|
use think\facade\Request;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 七牛云文件驱动
|
* 七牛云文件驱动
|
||||||
@ -62,27 +63,25 @@ class Qiniu extends File
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据配置获取到七牛云文件上传目标地址
|
* 根据请求计算七牛云文件上传目标地址
|
||||||
* @param boolean $client
|
* @param boolean $client
|
||||||
* @return string
|
* @return string
|
||||||
* @throws \think\Exception
|
* @throws \think\Exception
|
||||||
*/
|
*/
|
||||||
public function upload($client = false)
|
public function upload($client = false)
|
||||||
{
|
{
|
||||||
$isHttps = !!self::$config->get('storage_qiniu_is_https');
|
$protocol = Request::isSsl() ? 'https' : 'http';
|
||||||
switch (self::$config->get('storage_qiniu_region')) {
|
switch (self::$config->get('storage_qiniu_region')) {
|
||||||
case '华东':
|
case '华东':
|
||||||
if ($isHttps) return $client ? 'https://upload.qiniup.com' : 'https://upload.qiniup.com';
|
return $client ? "{$protocol}://up.qiniup.com" : "{$protocol}://upload.qiniup.com";
|
||||||
return $client ? 'http://upload.qiniup.com' : 'http://upload.qiniup.com';
|
|
||||||
case '华北':
|
case '华北':
|
||||||
if ($isHttps) return $client ? 'https://upload-z1.qiniup.com' : 'https://up-z1.qiniup.com';
|
return $client ? "{$protocol}://up-z1.qiniup.com" : "{$protocol}://upload-z1.qiniup.com";
|
||||||
return $client ? 'http://upload-z1.qiniup.com' : 'http://up-z1.qiniup.com';
|
|
||||||
case '北美':
|
case '北美':
|
||||||
if ($isHttps) return $client ? 'https://upload-na0.qiniup.com' : 'https://up-na0.qiniup.com';
|
return $client ? "{$protocol}://up-na0.qiniup.com" : "{$protocol}://upload-na0.qiniup.com";
|
||||||
return $client ? 'http://upload-na0.qiniup.com' : 'http://up-na0.qiniup.com';
|
|
||||||
case '华南':
|
case '华南':
|
||||||
if ($isHttps) return $client ? 'https://upload-z2.qiniup.com' : 'https://up-z2.qiniup.com';
|
return $client ? "{$protocol}://up-z2.qiniup.com" : "{$protocol}://upload-z2.qiniup.com";
|
||||||
return $client ? 'http://upload-z2.qiniup.com' : 'http://up-z2.qiniup.com';
|
case "东南亚":
|
||||||
|
return $client ? "{$protocol}://up-as0.qiniup.com" : "{$protocol}://upload-as0.qiniup.com";
|
||||||
default:
|
default:
|
||||||
throw new \think\Exception('未配置七牛云存储区域');
|
throw new \think\Exception('未配置七牛云存储区域');
|
||||||
}
|
}
|
||||||
@ -204,4 +203,19 @@ class Qiniu extends File
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 生成文件上传TOKEN
|
||||||
|
* @param null|string $key 指定保存名称
|
||||||
|
* @param integer $expires 指定令牌有效时间
|
||||||
|
* @return string
|
||||||
|
* @throws \think\Exception
|
||||||
|
*/
|
||||||
|
public function buildUploadToken($key = null, $expires = 3600)
|
||||||
|
{
|
||||||
|
$location = $this->base();
|
||||||
|
$bucket = self::$config->get('storage_qiniu_bucket');
|
||||||
|
$policy = ['returnBody' => '{"uploaded":true,"filename":"$(key)","url":"' . $location . '$(key)"}'];
|
||||||
|
return $this->getAuth()->uploadToken($bucket, $key, $expires, $policy, true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user