layui+drogon完成文件上传(简例)

layui界面加入按钮、文本框、进度条:

<div class="layui-row">
	<button type="button" class="layui-btn" id="file_upload_control">文件上传</button>
	<input type="file" id="files_input" style="display: none" multiple>
</div>

<div class="layui-input-inline" style="margin-top: 1%;">
	<input disabled autocomplete="off" class="layui-input" id="file_chose"
		   style="width: 198%;height: 30px; " type="text" maxlength="30"
		   lay-verify="required" lay-vertype="tips" required="">
</div>

<div class="layui-row">
	<div class="layui-progress layui-progress-big" 
		 lay-filter="demoprogress" lay-showPercent="yes" id="upload_progress" 
		 style="width: 43%;margin-top: 1%;">
		<div class="layui-progress-bar layui-bg-green" lay-percent="0%"></div>
    </div>
</div>

js控制事件响应:


layui.use(['upload','element'], function() {
	var upload = layui.upload;
	var element = layui.element;
	element.init();
	var uploadInst = upload.render({
	    elem: '#file_upload_control'
	    , url: '/api/v2/system/OTA/upload'
	    , acceptMime : '.tar.gz'
	    , exts:'tar.gz'
	    , number: 1
	    , size: 102400*300
	    , choose: function(obj) {
	        UPLOAD_FILES = obj.pushFile();
	        obj.preview(function (index, file, result) {
	            document.getElementById('file_chose').value = file.name;
	        });
	    }
	    , progress: function(value) {
	        if (value == 100) {
	            layer.msg('<div class="loading-wrapper"><span class="loading-icon"></span><span class="loading-text">文件上传完成,正在保存到本地</span></div>', {
	                icon: 16,       // 图标
	                shade: 0.01,    // 背景遮罩透明度
	                time: 0,        // 0表示不自动关闭
	                area: 'auto',   // 加载层的大小
	                offset: 'auto', // 加载层的位置
	                closeBtn: 0,    // 是否显示关闭按钮
	                skin: 'custom-loading-layer' // 自定义样式类名
	            });
	        }
	            
	        element.progress('demoprogress', value+'%');
	    }
		, done: function(res) {
	        if(res.code == 0) {
	            layer.closeAll('loading');
	            layui.layer.alert('文件上传成功', { icon: 6 });
	
	            for (let x in UPLOAD_FILES) {
	                delete UPLOAD_FILES[x];
	            }
	        }
	        else {
	            layui.layer.alert('文件上传失败', { icon: 5 });
	        }
	    }
	    , error: function () {
	        layui.layer.msg("请求异常")
	    }
    });
});

完结~