IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Layui上传系列之三(插件封装,简化开发) -> 正文阅读

[JavaScript知识库]Layui上传系列之三(插件封装,简化开发)

虽然实现了多文件分块上传,但是每个页面用到上传都要写那么多代码,还是不爽啊,而且还要绑定文件列表,那就再封装一下吧,开发用起来也就简单了,把layui的uploader都给他屏蔽掉。

有了前面的基础,那就继续走一波了。

//上传控件
function uploader() {
    this.option = null;
}

//上传控件初始化
uploader.init = function (option) {
    //定义上传控件对象,初始化后返回对象
    var uploaderObj = new uploader();
    uploaderObj.option = option;

    //上传按钮ID
    var uploadBtnId = option.uploadBtnId;
    //上传列表ID
    var uploadListId = option.uploadListId;
    //上传服务地址
    var url = option.url;

    //相关属性定义,省略…

    var uploadInst = upload.render({
        elem: '#' + uploadBtnId //绑定元素
        , elemList: $('#' + fileListId) //列表元素对象
        , url: url //上传接口
        , accept: 'file'
        , auto: false
        , multiple: true

        //部分代码与之前基本相同,省略…
    });

    return uploaderObj;
};

uploader.prototype.bindFile = function () {
    var url = buildUrl('/Sys/Handler/FileUploadHandler.ashx?action=GetFileList', null);
    var that = this;
    
    var downloadUrl = buildUrl('/Sys/Handler/FileDownloadHandler.ashx', null);
    $.get(url, function (res) {
        $('#' + that.option.filesBindId).empty();

        var files = res.data;
        for (var fileIndex in files) {
            var file = files[fileIndex];
            var fileId = file.FileId;
            var fileUrl = downloadUrl + '?fileId=' + fileId;
            var fileName = file.FileName;

            var $fileTr = $([
                '<tr>'
                , '<td>'
                , '<a target="_blank" href="' + fileUrl + '">' + fileName + '</a>'
                , '</td>'
                , '<td>' + createUserName + '</td>'
                , '<td>' + createDate + '</td>'
                , '<td style="text-align:center;"><a flag="del" style="cursor:pointer;"><i class="layui-icon layui-icon-delete color-red"></i></a></td>'
                , '</tr>'].join(''));

            $fileTr.find('a[flag="del"]').click(function () {
                var layer = layui.layer;
                layer.confirm('确定删除该文件?', function (index) {
                    deleteFile(fileId);

                    layer.close(index);
                });
            });

            $('#' + that.option.filesBindId).append($fileTr);
        }
    });

    //删除文件
    function deleteFile(fileId) {
        var deleteUrl = buildUrl('/Sys/Handler/FileUploadHandler.ashx?action=DeleteFile', null);
        deleteUrl += '&fileId=' + fileId;

        $.get(deleteUrl, function (res) {
            if (checkResult(res, '删除文件失败')) {
                that.bindFile();
            }
        });
    }
});

调用:

html

<div class="layui-form-item">
? ? ? ? <label class="layui-form-label">附件</label>
? ? ? ? <div class="layui-input-block">
? ? ? ? ? ? <button type="button" class="layui-btn ?layui-btn-sm" id="btnFile" >
? ? ? ? ? ? ? ? <i class="layui-icon layui-icon-upload"></i>上传文件
? ? ? ? ? ? </button>
? ? ? ? ? ? <table class="layui-table" id="files">
? ? ? ? ? ? </table>
? ? ? ? </div>
</div>

js

var fileUpload = uploader.init({
                uploadBtnId: 'btnFile'//上传按钮ID
                , filesBindId: 'files'//文件绑定ID
                , afterUpload: function () {//上传完执行,可不实现

                }
            });

//加载文件列表
fileUpload.bindFile();

看,看,看,是不超级简单了呢。

研究前面的东西花了2-3天,完成封装用了一天多,感觉还是不错的。

系列回顾:

?Layui上传系列之一(小试牛刀原理为先)_龙井茶的Sky-CSDN博客icon-default.png?t=L892https://blog.csdn.net/to_love_/article/details/120659695?Layui上传系列之二(多文件分块上传优化实现)_龙井茶的Sky-CSDN博客icon-default.png?t=L892https://blog.csdn.net/to_love_/article/details/120659906

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:11:30  更:2021-10-09 16:12:01 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 1:43:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码