123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803 |
- function timeD(time) {
- let t=Date.parse(time)+(43*1000);
- console.log(t);
- let d = new Date(t);
- let data = d.getFullYear()+'-'+timeP(d.getMonth() + 1)+'-'+timeP(d.getDate())+' '+timeP(d.getHours())+':'+timeP(d.getMinutes())+':'+ this.timeP(d.getSeconds());
- return data;
- }
- // 补0
- function timeP(s) {
- return s < 10 ? '0' + s : s
- }
- var fileReader = new FileReader();
- fileReader.headArray=[];
- var headType={
- 'String':'文本',
- 'Int64':'整数',
- 'Float64':'小数',
- 'Date':'日期',
- }
- fileReader.isRight=function (str, type) {
- var t = type || 0;
- var patn = /^[0-9]+$/;
- if (t == 1) {
- patn = /^\d+(\.\d+)?$/;
- }
- else if (t == 2) {
- patn = /^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-)) (20|21|22|23|[0-1]?\d):[0-5]?\d:[0-5]?\d$/;
- }
- if (!patn.test(str)) return false;
- return true;
- }
- fileReader.onload = function(ev) {
- try {
- var data = ev.target.result
- var workbook = XLSX.read(data, {
- type: 'binary',
- cellDates: true
- }) // 以二进制流方式读取得到整份excel表格对象
- var persons = []; // 存储获取到的数据
- } catch (e) {
- console.log('文件类型不正确');
- return;
- }
- // 表格的表格范围,可用于判断表头是否数量是否正确
- var fromTo = '';
- // 遍历每张表读取
- for (var sheet in workbook.Sheets) {
- if (workbook.Sheets.hasOwnProperty(sheet)) {
- fromTo = workbook.Sheets[sheet]['!ref'];
- console.log(fromTo);
- const sheet2JSONOpts = {
- defval: '-'//给defval赋值为空的字符串
- }
- persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet],sheet2JSONOpts));
- // break; // 如果只取第一张表,就取消注释这行
- }
- }
- //在控制台打印出来表格中的数据
- var cell=0;
- for(var j=0;j<persons.length;j++){
- var arr=persons[j];
- if(j==0){
- $("#tablehead").append("<tr class='exceltitle'></tr>");
- }
- $("#tablebody").append("<tr class='excelcontent'></tr>");
- var k=0;
- for (var i in arr) {
- if(j==0){
- var itemType='未知';
- if(fileReader.headArray[cell]){
- itemType = headType[fileReader.headArray[cell].type];
- }
- $(".exceltitle").append("<th>"+i+"<strong>["+itemType+"]</strong></th>");
- cell++;
- }
- var isRight='',errorTips='';
- if(fileReader.headArray[k]){
- if(fileReader.headArray[k].type=='int'){
- isRight = fileReader.isRight(arr[i],0)?'':'error';
- errorTips = fileReader.isRight(arr[i],0)?'':'错误的数据';
- }
- else if(fileReader.headArray[k].type=='float'){
- isRight = fileReader.isRight(arr[i],1)?'':'error';
- errorTips = fileReader.isRight(arr[i],0)?'':'错误的数据';
- }
- else if(fileReader.headArray[k].type=='date'){
- console.log(arr[i]);
- if(arr[i] instanceof Date)
- {
- arr[i] = timeD(arr[i]);
- }else{
- isRight ='error';
- errorTips = fileReader.isRight(arr[i],0)?'':'错误的数据';
- }
- }
- }
- $(".excelcontent").eq(j).append("<td class='"+isRight+"' title='"+errorTips+"'>"+arr[i]+"</td>");
- k++;
- }
- console.log(cell);
- if(fileReader.headArray.length!=cell){
- $("#tablebody").html('').append("<tr class='excelcontent'><td colspan='"+cell+"' style='padding:20px 0;font-weight:600; color:#EB4336'>EXCEL表格数据与创建的数据表信息不匹配,请编辑EXCEL表格数据或者数据表信息后重新上传</td></tr>");
- layer.msg('EXCEL表格数据与创建的数据表信息不匹配');
- break;
- }
- if(j>15){
- break;
- }
- }
- };
- function uploadExcel(options) {
- var settings = {
- url:'',
- data:{},
- choose:function(obj){
- console.log('选择完成');
- console.log(obj);
- },
- before:function(obj){
- console.log('上传前');
- console.log(obj);
- },
- done: function(res, index, upload){
- console.log('上传成功');
- console.log(res);
- },
- allDone: function(obj){
- console.log('多文件上传回调');
- console.log(obj);
- },
- error: function (index, upload) {
- console.log('上传失败');
- console.log(index);
- },
- progress: function(n, elem){
- console.log('上传进度');
- var percent = n + '%'
- }
- };
- ops = $.extend({}, settings, options);
- var contentHtml = '<div class="upload-file-title" id="readyfile"><div id="uploadTitle"><span id="selectfiles" class="upload-select-btn">选择文件</span>请选择<strong>xls,xlsx</strong>格式的文件上传,<span class="upload-file-tips">注意:您可以上传大小10M以内的文件。</span><span id="postfiles" style="display:none;">上传</span></div></div>\
- <div class="upload-file-box"><table class="upload-file-table" width="100%"><thead id="tablehead" class="tablehead"></thead><tbody id="tablebody" class="tablebody"></tbody></table></div>';
- var tableHeight=window.innerHeight-60;
- layer.open({
- title: '<strong>上传数据</strong>',
- type: '1',
- area: ['1226px', tableHeight+'px'],
- content: '<div><div class="box-contact-info">' + contentHtml + '</div></div>',
- success: function (obj, layerIndex) {
- var demoListView=$('#readyfile'),
- uploadListIns = upload.render({
- elem: '#selectfiles'
- , url: 'http://i.slambase.cn:8081/v1/file'
- , accept: 'file'
- , acceptMime:'.xls,.xlsx,.csv'
- , exts:'xls|xlsx|csv'
- , auto: false
- , size: 10*1024
- , bindAction: '#postfiles'
- , file:'fileName'
- , data: {'user_id':options.data.user_id,'table_name':options.data.table_name}
- , choose: function (obj) {
- //读取本地文件
- obj.preview(function (index, file, result) {
- // 以二进制方式打开文件
- $("#tablehead").append("");
- $("#tablebody").append("");
- fileReader.headArray=ops.data.table_schema;
- fileReader.readAsBinaryString(file);
- var tr = $(['<div class="file-info" id="upload' + index + '">'
- , '<span>文件名称:<i>' + file.name + '</i></span>'
- , '<span>进度:<i id="progress_' + index + '">0%</i></span>'
- , '<span>大小:<i>' + (file.size / (1024 * 1024)).toFixed(1) + 'MB</i></span>'
- , '<span>状态:<i id="status_' + index + '">数据预览</i></span>'
- , '<span class="file-delete">重新选择</span>'
- ,'<span class="upload-post-btn">开始上传</span>'
- , '</div>'].join(''));
- //删除
- tr.find('.file-delete').on('click', function () {
- tr.remove();
- $('#uploadTitle').show();
- $("#tablehead").html("");
- $("#tablebody").html("");
- uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
- });
- //上传
- tr.find('.upload-post-btn').on('click', function () {
- // alert('上传的参数为:'+JSON.stringify(ops.data))
- $('#postfiles').click();
- });
-
- $('#uploadTitle').hide();
- demoListView.append(tr);
- $("#tablehead").html("");
- $("#tablebody").html("");
- });
- }
- , done: function (res, index, upload) {
- if (res.code == 1) { //上传成功
- layer.msg('上传成功');
- }
- },
- progress: function (index, file, percent) {
- $('#progress_' + index).html(percent * 100 + '%');
- $('#status_' + index).html('上传中...');
- console.log(percent);
- }
- , error: function (index, upload) {
- $('#progress_' + index).html('0%');
- $('#status_' + index).html('上传失败,请重试');
- }
- });
- }
- });
- }
- var upload = {
- config: {} //全局配置项
- //设置全局项
- ,set: function(options){
- var that = this;
- that.config = $.extend({}, that.config, options);
- return that;
- }
- }
- ,device = function(key){
- var agent = navigator.userAgent.toLowerCase()
- //获取版本号
- ,getVersion = function(label){
- var exp = new RegExp(label + '/([^\\s\\_\\-]+)');
- label = (agent.match(exp)||[])[1];
- return label || false;
- }
-
- //返回结果集
- ,result = {
- os: function(){ //底层操作系统
- if(/windows/.test(agent)){
- return 'windows';
- } else if(/linux/.test(agent)){
- return 'linux';
- } else if(/iphone|ipod|ipad|ios/.test(agent)){
- return 'ios';
- } else if(/mac/.test(agent)){
- return 'mac';
- }
- }()
- ,ie: function(){ //ie版本
- return (!!win.ActiveXObject || "ActiveXObject" in win) ? (
- (agent.match(/msie\s(\d+)/) || [])[1] || '11' //由于ie11并没有msie的标识
- ) : false;
- }()
- ,weixin: getVersion('micromessenger') //是否微信
- };
-
- //任意的key
- if(key && !result[key]){
- result[key] = getVersion(key);
- }
-
- //移动设备
- result.android = /android/.test(agent);
- result.ios = result.os === 'ios';
- result.mobile = (result.android || result.ios) ? true : false;
-
- return result;
- }
-
- //操作当前实例
- ,thisUpload = function(){
- var that = this;
- return {
- upload: function(files){
- that.upload.call(that, files);
- }
- ,reload: function(options){
- that.reload.call(that, options);
- }
- ,config: that.config
- }
- }
-
- //字符常量
- ,MOD_NAME = 'upload', ELEM = '.layui-upload', THIS = 'layui-this', SHOW = 'layui-show', HIDE = 'layui-hide', DISABLED = 'layui-disabled'
-
- ,ELEM_FILE = 'layui-upload-file', ELEM_FORM = 'layui-upload-form', ELEM_IFRAME = 'layui-upload-iframe', ELEM_CHOOSE = 'layui-upload-choose', ELEM_DRAG = 'layui-upload-drag'
-
-
- //构造器
- ,Class = function(options){
- var that = this;
- that.config = $.extend({}, that.config, upload.config, options);
- that.render();
- };
-
- //默认配置
- Class.prototype.config = {
- accept: 'images' //允许上传的文件类型:images/file/video/audio
- ,exts: '' //允许上传的文件后缀名
- ,auto: false //是否选完文件后自动上传
- ,bindAction: '' //手动上传触发的元素
- ,url: '' //上传地址
- ,field: 'file' //文件字段名
- ,acceptMime: '' //筛选出的文件类型,默认为所有文件
- ,method: 'post' //请求上传的 http 类型
- ,data: {} //请求上传的额外参数
- ,drag: true //是否允许拖拽上传
- ,size: 0 //文件限制大小,默认不限制
- ,number: 0 //允许同时上传的文件数,默认不限制
- ,multiple: false //是否允许多文件上传,不支持ie8-9
- };
-
- //初始渲染
- Class.prototype.render = function(options){
- var that = this
- ,options = that.config;
- options.elem = $(options.elem);
- options.bindAction = $(options.bindAction);
- that.file();
- that.events();
- };
-
- //追加文件域
- Class.prototype.file = function(){
- var that = this
- ,options = that.config
- ,elemFile = that.elemFile = $([
- '<input class="'+ ELEM_FILE +'" type="file" accept="'+ options.acceptMime +'" name="'+ options.field +'"'
- ,(options.multiple ? ' multiple' : '')
- ,'>'
- ].join(''))
- ,next = options.elem.next();
-
- if(next.hasClass(ELEM_FILE) || next.hasClass(ELEM_FORM)){
- next.remove();
- }
-
- //包裹ie8/9容器
- if(device.ie && device.ie < 10){
- options.elem.wrap('<div class="layui-upload-wrap"></div>');
- }
-
- that.isFile() ? (
- that.elemFile = options.elem
- ,options.field = options.elem[0].name
- ) : options.elem.after(elemFile);
-
- //初始化ie8/9的Form域
- if(device.ie && device.ie < 10){
- that.initIE();
- }
- };
-
- //ie8-9初始化
- Class.prototype.initIE = function(){
- var that = this
- ,options = that.config
- ,iframe = $('<iframe id="'+ ELEM_IFRAME +'" class="'+ ELEM_IFRAME +'" name="'+ ELEM_IFRAME +'" frameborder="0"></iframe>')
- ,elemForm = $(['<form target="'+ ELEM_IFRAME +'" class="'+ ELEM_FORM +'" method="post" key="set-mine" enctype="multipart/form-data" action="'+ options.url +'">'
- ,'</form>'].join(''));
-
- //插入iframe
- $('#'+ ELEM_IFRAME)[0] || $('body').append(iframe);
- //包裹文件域
- if(!options.elem.next().hasClass(ELEM_FORM)){
- that.elemFile.wrap(elemForm);
-
- //追加额外的参数
- options.elem.next('.'+ ELEM_FORM).append(function(){
- var arr = [];
- $.each(options.data, function(key, value){
- value = typeof value === 'function' ? value() : value;
- arr.push('<input type="hidden" name="'+ key +'" value="'+ value +'">')
- });
- return arr.join('');
- }());
- }
- };
-
- //异常提示
- Class.prototype.msg = function(content){
- alert(content);
- };
-
- //判断绑定元素是否为文件域本身
- Class.prototype.isFile = function(){
- var elem = this.config.elem[0];
- if(!elem) return;
- return elem.tagName.toLocaleLowerCase() === 'input' && elem.type === 'file'
- }
-
- //预读图片信息
- Class.prototype.preview = function(callback){
- var that = this;
- if(window.FileReader){
- $.each(that.chooseFiles, function(index, file){
- var reader = new FileReader();
- reader.readAsDataURL(file);
- reader.onload = function(){
- callback && callback(index, file, this.result);
- }
- });
- }
- };
-
- //执行上传
- Class.prototype.upload = function(files, type){
- var that = this
- ,options = that.config
- ,elemFile = that.elemFile[0]
-
- //高级浏览器处理方式,支持跨域
- ,ajaxSend = function(){
- var successful = 0, aborted = 0
- ,items = files || that.files || that.chooseFiles || elemFile.files
- ,allDone = function(){ //多文件全部上传完毕的回调
- if(options.multiple && successful + aborted === that.fileLength){
- typeof options.allDone === 'function' && options.allDone({
- total: that.fileLength
- ,successful: successful
- ,aborted: aborted
- });
- }
- };
- $.each(items, function(index, file){
- var formData = new FormData();
-
- formData.append(options.field, file);
-
- //追加额外的参数
- $.each(options.data, function(key, value){
- value = typeof value === 'function' ? value() : value;
- formData.append(key, value);
- });
-
- //提交文件
- var opts = {
- url: options.url
- ,type: 'post' //统一采用 post 上传
- ,data: formData
- ,contentType: false
- ,processData: false
- ,dataType: 'json'
- ,headers: options.headers || {}
- //成功回调
- ,success: function(res){
- successful++;
- done(index, res);
- allDone();
- }
- //异常回调
- ,error: function(){
- aborted++;
- that.msg('请求上传接口出现异常');
- error(index);
- allDone();
- }
- };
- //监听进度条
- if(typeof options.progress === 'function'){
- opts.xhr = function(){
- var xhr = $.ajaxSettings.xhr();
- //监听上传进度
- xhr.upload.addEventListener("progress", function (e) {
- if(e.lengthComputable) {
- var percent = Math.floor((e.loaded/e.total)* 100); //百分比
- options.progress(percent, options.item[0], e);
- }
- });
- return xhr;
- }
- }
- $.ajax(opts);
- });
- }
-
- //低版本IE处理方式,不支持跨域
- ,iframeSend = function(){
- var iframe = $('#'+ ELEM_IFRAME);
-
- that.elemFile.parent().submit();
- //获取响应信息
- clearInterval(Class.timer);
- Class.timer = setInterval(function() {
- var res, iframeBody = iframe.contents().find('body');
- try {
- res = iframeBody.text();
- } catch(e) {
- that.msg('获取上传后的响应信息出现异常');
- clearInterval(Class.timer);
- error();
- }
- if(res){
- clearInterval(Class.timer);
- iframeBody.html('');
- done(0, res);
- }
- }, 30);
- }
-
- //统一回调
- ,done = function(index, res){
- that.elemFile.next('.'+ ELEM_CHOOSE).remove();
- elemFile.value = '';
- if(typeof res !== 'object'){
- try {
- res = JSON.parse(res);
- } catch(e){
- res = {};
- return that.msg('请对上传接口返回有效JSON');
- }
- }
- typeof options.done === 'function' && options.done(res, index || 0, function(files){
- that.upload(files);
- });
- }
-
- //统一网络异常回调
- ,error = function(index){
- if(options.auto){
- elemFile.value = '';
- }
- typeof options.error === 'function' && options.error(index || 0, function(files){
- that.upload(files);
- });
- }
-
- ,exts = options.exts
- ,check ,value = function(){
- var arr = [];
- $.each(files || that.chooseFiles, function(i, item){
- arr.push(item.name);
- });
- return arr;
- }()
-
- //回调返回的参数
- ,args = {
- //预览
- preview: function(callback){
- that.preview(callback);
- }
- //上传
- ,upload: function(index, file){
- var thisFile = {};
- thisFile[index] = file;
- that.upload(thisFile);
- }
- //追加文件到队列
- ,pushFile: function(){
- that.files = that.files || {};
- $.each(that.chooseFiles, function(index, item){
- that.files[index] = item;
- });
- return that.files;
- }
- //重置文件
- ,resetFile: function(index, file, filename){
- var newFile = new File([file], filename);
- that.files = that.files || {};
- that.files[index] = newFile;
- }
- }
-
- //提交上传
- ,send = function(){
- //选择文件的回调
- if(type === 'choose' || options.auto){
- options.choose && options.choose(args);
- if(type === 'choose'){
- return;
- }
- }
-
- //上传前的回调
- options.before && options.before(args);
- //IE兼容处理
- if(device.ie){
- return device.ie > 9 ? ajaxSend() : iframeSend();
- }
-
- ajaxSend();
- }
- //校验文件格式
- value = value.length === 0
- ? ((elemFile.value.match(/[^\/\\]+\..+/g)||[]) || '')
- : value;
-
- if(value.length === 0) return;
- switch(options.accept){
- case 'file': //一般文件
- if(exts && !RegExp('\\w\\.('+ exts +')$', 'i').test(escape(value))){
- that.msg('选择的文件中包含不支持的格式');
- return elemFile.value = '';
- }
- break;
- case 'video': //视频文件
- if(!RegExp('\\w\\.('+ (exts || 'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(value))){
- that.msg('选择的视频中包含不支持的格式');
- return elemFile.value = '';
- }
- break;
- case 'audio': //音频文件
- if(!RegExp('\\w\\.('+ (exts || 'mp3|wav|mid') +')$', 'i').test(escape(value))){
- that.msg('选择的音频中包含不支持的格式');
- return elemFile.value = '';
- }
- break;
- default: //图片文件
- $.each(value, function(i, item){
- if(!RegExp('\\w\\.('+ (exts || 'jpg|png|gif|bmp|jpeg$') +')', 'i').test(escape(item))){
- check = true;
- }
- });
- if(check){
- that.msg('选择的图片中包含不支持的格式');
- return elemFile.value = '';
- }
- break;
- }
-
- //检验文件数量
- that.fileLength = function(){
- var length = 0
- ,items = files || that.files || that.chooseFiles || elemFile.files;
- $.each(items, function(){
- length++;
- });
- return length;
- }();
- if(options.number && that.fileLength > options.number){
- return that.msg('同时最多只能上传的数量为:'+ options.number);
- }
-
- //检验文件大小
- if(options.size > 0 && !(device.ie && device.ie < 10)){
- var limitSize;
-
- $.each(that.chooseFiles, function(index, file){
- if(file.size > 1024*options.size){
- var size = options.size/1024;
- size = size >= 1 ? (size.toFixed(2) + 'MB') : options.size + 'KB'
- elemFile.value = '';
- limitSize = size;
- }
- });
- if(limitSize) return that.msg('文件不能超过'+ limitSize);
- }
- send();
- };
-
- //重置方法
- Class.prototype.reload = function(options){
- options = options || {};
- delete options.elem;
- delete options.bindAction;
-
- var that = this
- ,options = that.config = $.extend({}, that.config, upload.config, options)
- ,next = options.elem.next();
-
- //更新文件域相关属性
- next.attr({
- name: options.name
- ,accept: options.acceptMime
- ,multiple: options.multiple
- });
- };
-
- //事件处理
- Class.prototype.events = function(){
- var that = this
- ,options = that.config
-
- //设置当前选择的文件队列
- ,setChooseFile = function(files){
- that.chooseFiles = {};
- $.each(files, function(i, item){
- var time = new Date().getTime();
- that.chooseFiles[time + '-' + i] = item;
- });
- }
-
- //设置选择的文本
- ,setChooseText = function(files, filename){
- var elemFile = that.elemFile
- ,value = files.length > 1
- ? files.length + '个文件'
- : ((files[0] || {}).name || (elemFile[0].value.match(/[^\/\\]+\..+/g)||[]) || '');
-
- if(elemFile.next().hasClass(ELEM_CHOOSE)){
- elemFile.next().remove();
- }
- that.upload(null, 'choose');
- if(that.isFile() || options.choose) return;
- elemFile.after('<span class="layui-inline '+ ELEM_CHOOSE +'">'+ value +'</span>');
- };
- //点击上传容器
- options.elem.off('upload.start').on('upload.start', function(){
- var othis = $(this), data = othis.attr('lay-data');
-
- if(data){
- try{
- data = new Function('return '+ data)();
- that.config = $.extend({}, options, data);
- } catch(e){
- hint.error('Upload element property lay-data configuration item has a syntax error: ' + data)
- }
- }
-
- that.config.item = othis;
- that.elemFile[0].click();
- });
-
- //拖拽上传
- if(!(device.ie && device.ie < 10)){
- options.elem.off('upload.over').on('upload.over', function(){
- var othis = $(this)
- othis.attr('lay-over', '');
- })
- .off('upload.leave').on('upload.leave', function(){
- var othis = $(this)
- othis.removeAttr('lay-over');
- })
- .off('upload.drop').on('upload.drop', function(e, param){
- var othis = $(this), files = param.originalEvent.dataTransfer.files || [];
-
- othis.removeAttr('lay-over');
- setChooseFile(files);
-
- if(options.auto){
- that.upload(files);
- } else {
- setChooseText(files);
- }
- });
- }
-
- //文件选择
- that.elemFile.off('upload.change').on('upload.change', function(){
- var files = this.files || [];
- setChooseFile(files);
- options.auto ? that.upload() : setChooseText(files); //是否自动触发上传
- });
-
- //手动触发上传
- options.bindAction.off('upload.action').on('upload.action', function(){
- that.upload();
- });
-
- //防止事件重复绑定
- if(options.elem.data('haveEvents')) return;
-
- that.elemFile.on('change', function(){
- $(this).trigger('upload.change');
- });
-
- options.elem.on('click', function(){
- if(that.isFile()) return;
- $(this).trigger('upload.start');
- });
-
- if(options.drag){
- options.elem.on('dragover', function(e){
- e.preventDefault();
- $(this).trigger('upload.over');
- }).on('dragleave', function(e){
- $(this).trigger('upload.leave');
- }).on('drop', function(e){
- e.preventDefault();
- $(this).trigger('upload.drop', e);
- });
- }
-
- options.bindAction.on('click', function(){
- $(this).trigger('upload.action');
- });
-
- options.elem.data('haveEvents', true);
- };
-
- //核心入口
- upload.render = function(options){
- var inst = new Class(options);
- return thisUpload.call(inst);
- };
|