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 相关文章推荐
讨论html与javascript在浏览器中的加载顺序问题
Nov 27 Javascript
javascript中attribute和property的区别详解
Jun 05 Javascript
node.js中的http.request方法使用说明
Dec 14 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
javascript中异常处理案例(推荐)
Oct 03 Javascript
JS动态生成年份和月份实例代码
Feb 04 Javascript
vue2.0实现分页组件的实例代码
Jun 22 Javascript
C#实现将一个字符转换为整数
Dec 12 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 25 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 Javascript
JavaScript如何借用构造函数继承
Nov 06 Javascript
js实现贪吃蛇游戏 canvas绘制地图
Sep 09 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
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
javascript Object与Function使用
2010/01/11 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
jquery修改属性值实例代码(设置属性值)
2014/01/06 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
JavaScript电子时钟倒计时
2016/01/09 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
ReactNative页面跳转Navigator实现的示例代码
2017/08/02 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
详解JS实现系统登录页的登录和验证
2019/04/29 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
[08:42]DOTA2每周TOP10 精彩击杀集锦vol.2
2014/06/25 DOTA
django2 快速安装指南分享
2018/01/05 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
libreoffice python 操作word及excel文档的方法
2019/07/04 Python
python实现DEM数据的阴影生成的方法
2019/07/23 Python
python global和nonlocal用法解析
2020/02/03 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
护理中职生求职信范文
2014/02/24 职场文书
爱国口号
2014/06/19 职场文书
幼儿园秋季开学寄语
2014/08/02 职场文书
会计人员演讲稿
2014/09/11 职场文书
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
Axios代理配置及封装响应拦截处理方式
2022/04/07 Vue.js