layui实现文件或图片上传记录


Posted in Javascript onAugust 28, 2018

本文为大家分享了layui实现文件或图片上传记录的具体代码,供大家参考,具体内容如下

首先是layui自己的官网关于图片/文件上传的帮助文档:

接下来是我自己的使用记录:

1.首先在js中定义一个全局变量

var uploadListIns;

2.进行赋值

//多文件列表示例
/**
 * 图片上传
 */
layui.use('upload', function(){
 var $ = layui.jquery,upload = layui.upload;
 var demoListView = $('#proImageList');
 uploadListIns = upload.render({
  elem: '#chooseFile', //选择文件的按钮
  url: 'upload!ftp.action', //后台处理文件长传的方法
  data:{'serviceName':'外协订单供应商上传检验报告','tableName':'T_OUTSOURCE_ORDER','fileType':'图片'},
  accept: 'file', 
  multiple: true,  //是否允许多文件上传
  acceptMime: 'image/*', //规定打开文件选择框时,筛选出的文件类型
  field:'upload',  
  auto: false, 
  bindAction: '#upload', //用来触发上传的按钮ID
  choose: function(obj){ //选择文件后的回调函数,本例中在此将选择的文件进行展示
   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/1014).toFixed(1) +'kb</td>'
     ,'<td>等待上传</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();
     uploadListIns.config.elem.next()[0].value = ''; //清空 input file 值,以免删除后出现同名文件不可选
    });
    demoListView.append(tr);
   });
  },  
  done: function(res, index, upload){    //多文件上传时,只要有一个文件上传成功后就会触发这个回调函数
   console.info(res);
   if(res.status == "success"){ //上传成功
    var tr = demoListView.find('tr#upload-'+ index)
     ,tds = tr.children();
    tds.eq(2).html('<span style="color: #5FB878;">上传成功</span>');
    tds.eq(3).html('<a href="'+res.url+'" rel="external nofollow" >查看</a>'); //清空操作
    return delete this.files[index]; //删除文件队列已经上传成功的文件
   }else{
    alert(res.message);
   }
   this.error(index, upload);
  },
  allDone: function(obj){ //当文件全部被提交后,才触发
   if(obj.total > obj.successful){
    layer.msg("有文件上传失败,暂不更新生产进度,请重试或联系管理员");
   }else {
    //更新生产进度
    updateProductionSchedule(currentId, currentSchedule);
   }
  },
  error: function(index, upload){
   var tr = demoListView.find('tr#upload-'+ index)
    ,tds = tr.children();
   tds.eq(2).html('<span style="color: #FF5722;">上传失败</span>');
   tds.eq(3).find('.demo-reload').removeClass('layui-hide'); //显示重传
  }
 });
 $(".layui-upload-file").hide();
});

上述js代码中出现的相关html元素如下,相关引入js文件和css为:bootstrap3的js和css及layui的js文件即可

<!-- 模态框(Modal) -->
<div class="modal fade" id="uploadModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
 <div class="modal-dialog">
  <div class="modal-content">
   <div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
     ×
    </button>
    <h4 class="modal-title" id="myModalLabel">
     上传检验报告
    </h4>
   </div>
   <div class="modal-body">
    <button type="button" class="btn btn-primary" id="chooseFile">选择多文件</button>
    <button type="button" class="btn btn-success" id="upload">开始上传</button>
    <div class="table-responsive">
     <table class="table table-hover">
      <thead><tr>
       <th>文件名</th>
       <th>大小</th>
       <th>状态</th>
       <th>操作</th>
      </tr></thead>
      <tbody id="proImageList"></tbody>
     </table>
    </div>
   </div>
   <div class="modal-footer">
    <button type="button" class="btn btn-default" data-dismiss="modal">关闭
    </button>
   </div>
  </div><!-- /.modal-content -->
 </div><!-- /.modal -->
</div>

3.在打开模态框时可以对1中定义的变量进行动态赋值,这些变量会相应的传到后台中:

function showUploadModal(id) {
 //动态赋值
 uploadListIns.config.data.tableRecordId = id;
 uploadListIns.config.data.filenamePrefix = id+".自检pass.";
 $("#uploadModal").modal("show");
}

4.最终前端实现效果如下:

layui实现文件或图片上传记录

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS分割字符串并放入数组的函数
Jul 04 Javascript
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
js仿黑客帝国字母掉落效果代码分享
Nov 08 Javascript
正则表达式替换html元素属性的方法
Nov 26 Javascript
原生node.js案例--前后台交互
Feb 20 Javascript
基于JavaScript中字符串的match与replace方法(详解)
Dec 04 Javascript
vue最简单的前后端交互示例详解
Oct 11 Javascript
详解webpack打包第三方类库的正确姿势
Oct 20 Javascript
使用pm2自动化部署node项目的方法步骤
Jan 28 Javascript
JS中准确判断变量类型的方法
Jun 01 Javascript
jQuery 移除事件的方法
Jun 20 jQuery
vue 图片裁剪上传组件的实现
Nov 12 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 #Javascript
react native 获取地理位置的方法示例
Aug 28 #Javascript
微信小程序自定义音乐进度条的实例代码
Aug 28 #Javascript
JavaScript模拟实现自由落体效果
Aug 28 #Javascript
vue-cli3脚手架的配置及使用教程
Aug 28 #Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 #Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
Aug 28 #Javascript
You might like
乐信RP2100的电路分析和打磨
2021/03/02 无线电
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
Javascript Tab 导航插件 (23个)
2009/06/11 Javascript
精选的10款用于构建良好易用性网站的jQuery插件
2011/01/23 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
含有CKEditor的表单如何提交
2014/01/09 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
input框中的name和id的区别
2016/11/16 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
layui上传图片到服务器的非项目目录下的方法
2019/09/26 Javascript
python+django快速实现文件上传
2016/10/24 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
Python爬虫包BeautifulSoup简介与安装(一)
2018/06/17 Python
django缓存配置的几种方法详解
2018/07/16 Python
python读取xlsx的方法
2018/12/25 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
python中bytes和str类型的区别
2019/10/21 Python
Django自带的加密算法及加密模块详解
2019/12/03 Python
购买中国最好的电子产品:Geekbuying
2018/03/13 全球购物
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
离婚协议书范文2014
2014/10/16 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
2015年入党决心书
2015/02/05 职场文书
酒店员工辞职信范文
2015/02/28 职场文书
2015年机关纠风工作总结
2015/05/15 职场文书
工作简报范文
2015/07/21 职场文书
青年文明号创建口号大全
2015/12/25 职场文书
初中班主任心得体会
2016/01/07 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
剑指Offer之Java算法习题精讲二叉树的构造和遍历
2022/03/21 Java/Android