一、Layui的upload组件使用
Layui 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。
upload 组件是 Layui 中的一个文件上传组件,支持多文件上传,也可以在上传前对文件进行过滤等操作,非常实用。下面就来看一下如何使用这个组件。
1. 引入CSS和JS文件
在使用前需要将 Layui 的 CSS 和 JS 文件引入到页面中。这里我使用的是CDN方式引入,当然也可以下载到本地后引入。
<link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.min.css" integrity="sha384-vod1/sany/Iik2EnMOI1oF80W1wS4pZ/ns6fjX1cT7X01kYW8Rv6SBRCddakpu9I" crossorigin="anonymous">
<script src="https://cdn.staticfile.org/jquery/3.6.0/jquery.min.js" integrity="sha384-SmJ/6LWgX6xZGzcpwQ5r/J3pqtOTDtaT3yQq4I/9+OqO9wknUQqz8oJL/1gi6t2b" crossorigin="anonymous"></script>
<script src="https://cdn.staticfile.org/layui/2.5.6/layui.min.js" integrity="sha384-mLZCWIWLjd4m5TaABPlO4g8c2p53jo7nLJ0VquAU+04BzBcOtnGm/bXQB/QOu39k" crossorigin="anonymous"></script>
2. 编写HTML代码
在 HTML 中需要准备一个容器,将 upload 组件放置其中。这里使用一个表单来演示上传文件。
<form class="layui-form" action="">
<div class="layui-form-item">
<label class="layui-form-label">文件上传</label>
<div class="layui-input-block">
<button type="button" class="layui-btn" id="upload"><i class="layui-icon"></i>上传文件</button>
<div class="layui-upload-list">
<table class="layui-table">
<thead><tr><th>文件名</th><th>大小</th><th>操作</th></tr></thead>
<tbody id="fileList"></tbody>
</table>
</div>
</div>
</div>
</form>
通过一个按钮触发文件的选择以及上传操作,同时在页面中以表格的形式列出已经选择的文件,便于用户查看以及操作。这个按钮的 ID 设置为 upload,数据展示的位置使用了一个 tbody,ID 设置为 fileList。
3. 编写JavaScript代码
下面来看一下 JavaScript 的代码,其中包含了上传前的必要参数配置以及上传后的回调函数。
<script>
layui.use(['upload', 'layer'], function() {
var upload = layui.upload,
layer = layui.layer;
var uploadInst = upload.render({
elem: '#upload',
url: 'test.php',
acceptMime: 'image/*',
exts: 'jpg|png|gif|bmp|jpeg',
multiple: true,
auto: false,
bindAction: '',
number: 0,
data: {},
choose: function(obj){},
before: function(obj){
this.data = {
timestamp: +new Date(),
token: '123456'
};
layer.load(2);
},
done: function(res, index, upload){
layer.closeAll('loading');
if(res.code == 0){
var tr = '<tr><td>'+res.data.filename+'</td><td>'+res.data.size+'</td><td><button type="button" class="layui-btn layui-btn-sm layui-btn-danger">删除</button></td></tr>';
$('#fileList').append(tr);
}else{
layer.msg(res.msg, {icon: 2});
}
},
error: function(index, upload){
layer.closeAll('loading');
layer.msg('上传失败,请重试', {icon: 2});
}
});
});
</script>
注意,这里上传的地址为“test.php”,实际使用时需要根据自己的需求修改,同时上传后的返回值也需要根据自己的实际情况来编写。
二、上传阻止
有时候在上传文件时需要对上传的文件进行一些判断,如果不符合条件就需要阻止上传。upload 组件提供了 before 参数,可以用来在上传前对文件进行一些操作。
1. 过滤文件类型
在 before 函数中可以通过 obj.file.type 获取到文件类型,可以根据需要对文件类型进行判断,如果不符合要求就使用 layui 提供的 layer 组件弹出提示,并返回 false 阻止上传。
before: function(obj){
if(obj.file.type.indexOf('image') == -1){
layer.msg('请上传图片文件', {icon: 2});
return false;
}
}
2. 过滤文件大小
在 before 函数中还可以通过 obj.file.size 获取到文件大小,可以根据需要对文件大小进行判断,例如限制文件大小不能超过 2MB。
before: function(obj){
if(obj.file.size > 1024*1024*2){
layer.msg('文件大小不能超过2MB', {icon: 2});
return false;
}
}
通过 before 函数可以方便地对上传文件进行过滤,保障上传文件的正确性和安全性。
三、总结
通过本文的介绍,相信大家已经学会了如何使用 layui 的 upload 组件进行文件上传,以及如何使用 before 参数阻止上传。在实际的项目开发中,upload 组件会非常实用,可以帮助我们实现文件上传的功能。同时,通过 before 参数的使用,也可以更好地控制上传文件的内容和大小,提高了上传的安全性。