delete upload-mobile.js
This commit is contained in:
parent
c8b03f2e48
commit
c0f555adcf
@ -1,166 +0,0 @@
|
|||||||
/*!
|
|
||||||
|
|
||||||
@Title: layui.upload 单文件上传 - 全浏览器兼容版
|
|
||||||
@Author: 贤心
|
|
||||||
@License:MIT
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
layui.define(['layer-mobile', 'zepto'] , function(exports){
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var $ = layui.zepto;
|
|
||||||
var layer = layui['layer-mobile'];
|
|
||||||
var device = layui.device();
|
|
||||||
|
|
||||||
var elemDragEnter = 'layui-upload-enter';
|
|
||||||
var elemIframe = 'layui-upload-iframe';
|
|
||||||
|
|
||||||
var msgConf = {
|
|
||||||
icon: 2
|
|
||||||
,shift: 6
|
|
||||||
}, fileType = {
|
|
||||||
file: '文件'
|
|
||||||
,video: '视频'
|
|
||||||
,audio: '音频'
|
|
||||||
};
|
|
||||||
|
|
||||||
layer.msg = function(content){
|
|
||||||
return layer.open({
|
|
||||||
content: content || ''
|
|
||||||
,skin: 'msg'
|
|
||||||
,time: 2 //2秒后自动关闭
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
var Upload = function(options){
|
|
||||||
this.options = options;
|
|
||||||
};
|
|
||||||
|
|
||||||
//初始化渲染
|
|
||||||
Upload.prototype.init = function(){
|
|
||||||
var that = this, options = that.options;
|
|
||||||
var body = $('body'), elem = $(options.elem || '.layui-upload-file');
|
|
||||||
var iframe = $('<iframe id="'+ elemIframe +'" class="'+ elemIframe +'" name="'+ elemIframe +'"></iframe>');
|
|
||||||
|
|
||||||
//插入iframe
|
|
||||||
$('#'+elemIframe)[0] || body.append(iframe);
|
|
||||||
|
|
||||||
return elem.each(function(index, item){
|
|
||||||
item = $(item);
|
|
||||||
var form = '<form target="'+ elemIframe +'" method="'+ (options.method||'post') +'" key="set-mine" enctype="multipart/form-data" action="'+ (options.url||'') +'"></form>';
|
|
||||||
|
|
||||||
var type = item.attr('lay-type') || options.type; //获取文件类型
|
|
||||||
|
|
||||||
//包裹ui元素
|
|
||||||
if(!options.unwrap){
|
|
||||||
form = '<div class="layui-box layui-upload-button">' + form + '<span class="layui-upload-icon"><i class="layui-icon"></i>'+ (
|
|
||||||
item.attr('lay-title') || options.title|| ('上传'+ (fileType[type]||'图片') )
|
|
||||||
) +'</span></div>';
|
|
||||||
}
|
|
||||||
|
|
||||||
form = $(form);
|
|
||||||
|
|
||||||
//拖拽支持
|
|
||||||
if(!options.unwrap){
|
|
||||||
form.on('dragover', function(e){
|
|
||||||
e.preventDefault();
|
|
||||||
$(this).addClass(elemDragEnter);
|
|
||||||
}).on('dragleave', function(){
|
|
||||||
$(this).removeClass(elemDragEnter);
|
|
||||||
}).on('drop', function(){
|
|
||||||
$(this).removeClass(elemDragEnter);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
//如果已经实例化,则移除包裹元素
|
|
||||||
if(item.parent('form').attr('target') === elemIframe){
|
|
||||||
if(options.unwrap){
|
|
||||||
item.unwrap();
|
|
||||||
} else {
|
|
||||||
item.parent().next().remove();
|
|
||||||
item.unwrap().unwrap();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
//包裹元素
|
|
||||||
item.wrap(form);
|
|
||||||
|
|
||||||
//触发上传
|
|
||||||
item.off('change').on('change', function(){
|
|
||||||
that.action(this, type);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
//提交上传
|
|
||||||
Upload.prototype.action = function(input, type){
|
|
||||||
var that = this, options = that.options, val = input.value;
|
|
||||||
var item = $(input), ext = item.attr('lay-ext') || options.ext || ''; //获取支持上传的文件扩展名;
|
|
||||||
|
|
||||||
if(!val){
|
|
||||||
return;
|
|
||||||
};
|
|
||||||
|
|
||||||
//校验文件
|
|
||||||
switch(type){
|
|
||||||
case 'file': //一般文件
|
|
||||||
if(ext && !RegExp('\\w\\.('+ ext +')$', 'i').test(escape(val))){
|
|
||||||
layer.msg('不支持该文件格式', msgConf);
|
|
||||||
return input.value = '';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'video': //视频文件
|
|
||||||
if(!RegExp('\\w\\.('+ (ext||'avi|mp4|wma|rmvb|rm|flash|3gp|flv') +')$', 'i').test(escape(val))){
|
|
||||||
layer.msg('不支持该视频格式', msgConf);
|
|
||||||
return input.value = '';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case 'audio': //音频文件
|
|
||||||
if(!RegExp('\\w\\.('+ (ext||'mp3|wav|mid') +')$', 'i').test(escape(val))){
|
|
||||||
layer.msg('不支持该音频格式', msgConf);
|
|
||||||
return input.value = '';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default: //图片文件
|
|
||||||
if(!RegExp('\\w\\.('+ (ext||'jpg|png|gif|bmp|jpeg') +')$', 'i').test(escape(val))){
|
|
||||||
layer.msg('不支持该图片格式', msgConf);
|
|
||||||
return input.value = '';
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
options.before && options.before(input);
|
|
||||||
item.parent().submit();
|
|
||||||
|
|
||||||
var iframe = $('#'+elemIframe), timer = setInterval(function() {
|
|
||||||
var res;
|
|
||||||
try {
|
|
||||||
res = iframe.contents().find('body').text();
|
|
||||||
} catch(e) {
|
|
||||||
layer.msg('上传接口存在跨域', msgConf);
|
|
||||||
clearInterval(timer);
|
|
||||||
}
|
|
||||||
if(res){
|
|
||||||
clearInterval(timer);
|
|
||||||
iframe.contents().find('body').html('');
|
|
||||||
try {
|
|
||||||
res = JSON.parse(res);
|
|
||||||
} catch(e){
|
|
||||||
res = {};
|
|
||||||
return layer.msg('请对上传接口返回JSON字符', msgConf);
|
|
||||||
}
|
|
||||||
typeof options.success === 'function' && options.success(res, input);
|
|
||||||
}
|
|
||||||
}, 30);
|
|
||||||
|
|
||||||
input.value = '';
|
|
||||||
};
|
|
||||||
|
|
||||||
//暴露接口
|
|
||||||
exports('upload-mobile', function(options){
|
|
||||||
var upload = new Upload(options = options || {});
|
|
||||||
upload.init();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user