layui框架学习(43:文件上传模块-下)

  上一篇文章介绍文件上传模块使用示例时介绍了done和error事件,这两个事件是在文件上传成功(原文:在上传接口请求完毕后触发,但文件不一定是上传成功的)及上传失败(原文:请求上传出现异常)时触发。除了这两个事件,文件上传模块还支持其它几种事件,可以实现文件预览、显示上传文件列表等功能。
  选择文件后会触发choose事件,文件上传前会触发before事件,这两个事件中,choose事件在前,before事件在后,可以在这两个事件中实现图片预览、显示文件列表、弹出等待窗口等操作。注意,处理这两类事件时,一般需要将auto属性设置为false。
  图片预览的示例代码及效果如下所示:

	<button type="button" class="layui-btn" id="test">选择文件</button>	
	<div>
		<img id="imgPreview" style="width: 100px;height: 100px">
	</div>
	<script>
		layui.use(['upload','layer'], function(){
		  var upload = layui.upload;
		  var layer = layui.layer;
		  var $ = layui.jquery
		   
		  var uploadInst = upload.render({
		    elem: '#test' 
		    ,url: 'http://localhost:5098/ECData/UploadFile/' 
			,auto:false
		    ,done: function(res){
		      layer.alert('文件上传完毕!');	
		    }
		    ,error: function(){
		      layer.alert('文件上传失败!');	
		    }
			,choose: function(obj){
			  obj.preview(function(index, file, result){
				$('#imgPreview').attr('src', result); 
			  });				  
			}
		  });
		});
	</script>

在这里插入图片描述

  显示文件列表的示例代码及效果如下所示(代码参考自参考文献3):

<button type="button" class="layui-btn" id="test">选择文件</button>
<div class="layui-upload-list" style="max-width: 1000px;">
	<table class="layui-table">
		<colgroup>
			<col>
			<col width="150">
			<col width="260">
		</colgroup>
		<thead>
			<tr>
				<th>文件名</th>
				<th>大小</th>
				<th>类型</th>
			</tr>
		</thead>
		<tbody id="demoList"></tbody>
	</table>
</div>
<script>
	layui.use(['upload', 'layer'], function() {
		var upload = layui.upload;
		var layer = layui.layer;
		var $ = layui.jquery

		var uploadInst = upload.render({
			elem: '#test',
			elemList: $('#demoList') ,
			url: 'http://localhost:5098/ECData/UploadFile/',
			auto: false,
			multiple: true,
			done: function(res) {
				layer.alert('文件上传完毕!');
			},
			error: function() {
				layer.alert('文件上传失败!');
			},
			choose: function(obj) {
				var that = this;
				var files = this.files = obj.pushFile(); //将每次选择的文件追加到文件队列
				//读取本地文件
				obj.preview(function(index, file, result) {
					var tr = $(['<tr id="upload-' + index + '">', '<td>' + file.name +
						'</td>', '<td>' + (file.size / 1024).toFixed(1) + 'kb</td>',
						'<td>'+file.type+'</td></tr>'
					].join(''));
					
					that.elemList.append(tr);
				});
			}
		});
	});
</script>

在这里插入图片描述
在这里插入图片描述

  文件上传过程中会触发progress,用于显示或处理文件上传进度信息,其事件响应函数的形式为function(n, elem, res, index),其中n为进度百分比,elem为触发的元素 DOM 对象,res为progress 响应信息,index为当前上传文件的索引。progress事件的响应示例代码及效果如下所示:
在这里插入图片描述

<button type="button" class="layui-btn" id="test">选择文件</button>
<label>上传进度:<span id="progress"></span></label>		
<script>
	layui.use(['upload', 'layer'], function() {
		var upload = layui.upload;
		var layer = layui.layer;
		var $ = layui.jquery
		
		var uploadInst = upload.render({
			elem: '#test',
			url: 'http://localhost:5098/ECData/UploadFile/',
			accept:'file',
			auto: true,
			done: function(res) {
				layer.alert('文件上传完毕!');
			},
			error: function() {
				layer.alert('文件上传失败!');
			},
			progress: function(n, elem, res, index){
				$('#progress').html(n+'%');
			}
		});
	});
</script>

在这里插入图片描述

  除了上述事件,layui的文件上传模块还支持触发多文件上传完毕事件allDone,同时支持重新上传、跨域上传等,详细介绍请见参考文献2.

参考文献:
[1]B站:layui框架精讲全套视频教程
[2]https://layui.gitee.io/v2/docs/
[3]https://layui.gitee.io/v2/demo/
[4]https://github.com/layui/layui/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值