首页 > 其他分享 >layui多文件上传

layui多文件上传

时间:2024-11-28 10:23:25浏览次数:7  
标签:function index 文件 layui tr upload var 上传

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Demo</title>
  <!-- 请勿在项目正式环境中引用该 layui.css 地址 -->
  <link href="//unpkg.com/layui@2.9.20/dist/css/layui.css" rel="stylesheet">
</head>
<body>
<div class="layui-upload">
  <button type="button" class="layui-btn layui-btn-normal" id="ID-upload-demo-files">选择多文件</button> 
  <div class="layui-upload-list">
    <table class="layui-table">
      <colgroup>
        <col style="min-width: 100px;">
        <col width="150">
        <col width="260">
        <col width="150">
      </colgroup>
      <thead>
        <th>文件名</th>
        <th>大小</th>
        <th>上传进度</th>
        <th>操作</th>
      </thead>
      <tbody id="ID-upload-demo-files-list"></tbody>
    </table>
  </div>
  <button type="button" class="layui-btn" id="ID-upload-demo-files-action">开始上传</button>
</div>
  
<!-- 请勿在项目正式环境中引用该 layui.js 地址 -->
<script src="//unpkg.com/layui@2.9.20/dist/layui.js"></script>
<script>
layui.use(function(){
  var upload = layui.upload;
  var element = layui.element;
  var $ = layui.$;
  // 制作多文件上传表格
  var uploadListIns = upload.render({
    elem: '#ID-upload-demo-files',
    elemList: $('#ID-upload-demo-files-list'), // 列表元素对象
    url: '', // 实际使用时改成您自己的上传接口即可。
    accept: 'file',
    multiple: true,
    number: 3,
    auto: false,
    bindAction: '#ID-upload-demo-files-action',
    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><div class="layui-progress" lay-filter="progress-demo-'+ index +'"><div class="layui-progress-bar" lay-percent=""></div></div></td>',
          '<td>',
            '<button class="layui-btn layui-btn-xs demo-reload layui-hide">重传</button>',
            '<button class="layui-btn layui-btn-xs layui-btn-danger demo-delete">删除</button>',
          '</td>',
        '</tr>'].join(''));
        
        // 单个重传
        tr.find('.demo-reload').on('click', function(){
          obj.upload(index, file);
        });
        
        // 删除
        tr.find('.demo-delete').on('click', function(){
          delete files[index]; // 删除对应的文件
          tr.remove(); // 删除表格行
          // 清空 input file 值,以免删除后出现同名文件不可选
          uploadListIns.config.elem.next()[0].value = ''; 
        });
        
        that.elemList.append(tr);
        element.render('progress'); // 渲染新加的进度条组件
      });
    },
    done: function(res, index, upload){ // 成功的回调
      var that = this;
      // if(res.code == 0){ // 上传成功
        var tr = that.elemList.find('tr#upload-'+ index)
        var tds = tr.children();
        tds.eq(3).html(''); // 清空操作
        delete this.files[index]; // 删除文件队列已经上传成功的文件
        return;
      //}
      this.error(index, upload);
    },
    allDone: function(obj){ // 多文件上传完毕后的状态回调
      console.log(obj)
    },
    error: function(index, upload){ // 错误回调
      var that = this;
      var tr = that.elemList.find('tr#upload-'+ index);
      var tds = tr.children();
       // 显示重传
      tds.eq(3).find('.demo-reload').removeClass('layui-hide');
    },
    progress: function(n, elem, e, index){ // 注意:index 参数为 layui 2.6.6 新增
      element.progress('progress-demo-'+ index, n + '%'); // 执行进度条。n 即为返回的进度百分比
    }
  });
});
</script>

</body>
</html>

  

标签:function,index,文件,layui,tr,upload,var,上传
From: https://www.cnblogs.com/hany-postq473111315/p/18573719

相关文章

  • 使用rclone将Oss文件转存Minio
    解压unziprclone-v1.65.2-linux-amd64.zip添加可执行权限chmod+xrclone将可执行的rclone移动到系统的可执行路径中sudomvrclone/usr/local/bin/创建配置文件,配置文件需在指定位置vim/root/.config/rclone/rclone.conf修改成自己的bucket名称,执行同步命令–progre......
  • 融云IM干货丨如何确保 AAR 包中不包含 libc++_shared.so 文件?
    为了确保AAR包中不包含libc++_shared.so文件,可以采取以下几种方法:使用packagingOptions排除libc++_shared.so:在AAR包的build.gradle文件中,使用packagingOptions来排除libc++_shared.so文件。例如:gradleandroid{packagingOptions{exclude'lib/armeabi-v7......
  • Linux文件编程(持续更新)
    Linux系统提供了一系列自动化完成文件编程的API,如:打开open读写write/read光标定位lseek关闭close———————————————————————————————————————————O_EXCL(图片里不是出错而是返回值是-1,与O_CREAT配合使用)mode=0600(第一......
  • ScanState 和 LoadState 是 Microsoft 提供的用户状态迁移工具(USMT)中的两个核心命令行
    常见迁移方案|MicrosoftLearn计划为大量计算机升级硬件和/或操作系统时,可以使用用户状态迁移工具UserStateMigrationTool(USMT)。USMT(UserStateMigrationTool)通过从源计算机捕获以下用户的项来管理最终用户数字标识的迁移:操作系统设置。应用程序设置。个人文件......
  • 文件操作.C
    一、文件如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化的保存,我们可以使⽤⽂件磁盘(硬盘)上的⽂件是⽂件但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件......
  • Python解析Properties文件
    支持#注释及\换行支持多级属性赋值,如a.b.c=1demo.propertiesappId=cactus#公钥publicKey=-----BEGINPUBLICKEY-----\n\MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEP9eQZFl3j5zZX8bmYYEznA0z3/X+\n\TooIQ11rxFcPZsTvJPLCUY7NHasUenXJngmvRXSnP4odegaoe4usLDv/3A==\n\-----......
  • CVE-2024-11477 漏洞中,7-Zip的Zstandard解压缩功能由于对用户提供的数据验证不足,可能
    关于流行文件压缩工具7-Zip中的高危漏洞(CVE-2024-11477)。以下是该漏洞的详细说明和建议:漏洞概述:漏洞名称:CVE-2024-11477影响软件:7-Zip漏洞类型:缓冲区溢出漏洞发现者:趋势科技安全研究员NicholasZubrisky漏洞位置:Zstandard解压缩功能漏洞危害:由于对用户提供的数据验证......
  • C语言中对文件的输入输出
    在c中的文件操作通过读的形式,打开文件用FILE打开用FILE*类型的指针接受文件指针的首地址并且我们可以用读或写的方式打开文件使用r来读取文件当然也要判断是否读取文件成功,若读取成功fopen会传出指针,若失败则会传出空指针,所以要判断读取是否成功当然,当文件不存在时使用r会......
  • WnRAR将rar后缀格式文件转成zip后缀格式
    前言全局说明使用winRAR自带的转换功能,可以最大程度的保留原始信息,比如:打包时间、CRC32值等一、说明环境:Windows11家庭版23H222631.3737WinRAR6.00(32位)二、rar转zip2.12.2选择要转换的文件右边可以根据类型筛选2.3选择要转成的格式zip2.4选......
  • shell数组 Linux分文件 make工具
    shell中的数组shell支持稀疏数组格式:数组名=(初始值1初始值2,……)数组名=([下标]=初始值[下标]=初始值……)下标可以不连续arr=([10]=10[0]=0)访问数组中的元素${数组名[下标]}-->获取数组中指定下标元素的值获取数组中的所有元素${数组名[*]}--->获取数组中所......