首先看一下效果图:

修改layui的源文件upload.js
1.打开layui/modules/upload.js
2.搜索ajax
3.找到url:
4.添加以下代码:
,xhr:l.xhr(function(e){//此处为新添加功能
var percent=Math.floor((e.loaded / e.total)*100);//计算百分比
l.progress(percent);//回调将数值返回
}) 5.upload.js 中 p.prototype.config也要改,加一个xhr的定义,否则传文件时如果不设xhr会报错 p.prototype.config={
accept:"images",exts:"",auto:!0,bindAction:"",url:""
,field:"file",method:"post",data:{},drag:!0,size:0
,number:0,multiple:!1
,xhr:function(){}//此处需要添加
},
页面js代码
layui.use(['form', 'layer', "jquery",'element', 'laydate', "upload"], function () {
var upload = layui.upload,
element=layui.element,
layer = parent.layer === undefined ? layui.layer : top.layer;
var xhrOnProgress = function (fun) {
xhrOnProgress.onprogress = fun; //绑定监听
//使用闭包实现监听绑
return function () {
//通过$.ajaxSettings.xhr();获得XMLHttpRequest对象
var xhr = $.ajaxSettings.xhr();
//判断监听函数是否为函数
if (typeof xhrOnProgress.onprogress !== 'function')
return xhr;
//如果有监听函数并且xhr对象支持绑定时就把监听函数绑定上去
if (xhrOnProgress.onprogress && xhr.upload) {
xhr.upload.onprogress = xhrOnProgress.onprogress;
}
return xhr;
}
} //选择并网时间
laydate.render({
elem: '.connectGridTime'
}); var enrollArr = [];
var demoCount=0,demoFlag=false
var demoClass //公司注册信息上传文件
upload.render({
elem: '.enroll',
accept: 'file',
multiple: true,
url: sessionStorage.getItem("imgUrl") + "picture-console/common/file/upload",
xhr: xhrOnProgress,
progress: function (value) { //上传进度回调 value进度值,由于是进度条同时又是多文件上传不只一个进度条,所以要保证每次进度条的类名不一致,demoCount控制类名,demoFlag保证上下一致,所以该方法一直在被调用
if(demoFlag){
console.log(demoCount)
element.progress(`demo${demoCount}`, value + '%') //设置页面进度条
} }, before: function (obj) {
layer.load()
obj.preview(function (index, file, result) {
layer.closeAll('loading'); //关闭loading demoCount++
console.log('before',demoCount)
var size = file.size / 1024 / 1024
if(size<=1){
size=keepTwoDecimal(size*1024)+'KB'
}else{
size=keepTwoDecimal(size)+'MB'
}
var tr=`
<tr>
<td class="fileName">${file.name}</td>
<td>${size}</td>
<td class="uploadok">
<div class="uploadLoadingDiv">
<div class="layui-progress bar" lay-showpercent="true" lay-filter="demo${demoCount}">
<div class="layui-progress-bar layui-bg-red" lay-percent="0%"><span class="layui-progress-text">100%</span></div>
</div>
</div>
</td>
<td><button class="layui-btn layui-btn-danger layui-btn-sm" onclick="registerDel(this)">删除</button></td>
</tr>
`
$('#enrollBox').append(tr);
demoFlag=true })
},
error: function(index, upload){
element.progress(`demo${demoCount}`, '0%');
layer.msg('上传失败');
},
choose:function(obj){
demoFlag=false
},
done: function (res) {
if (res.code == '200') {
enrollArr.push(res.data[0]);
}
}
});
//四舍五入保留2位小数(若第二位小数为0,则保留一位小数)
function keepTwoDecimal(num) {
var result = parseFloat(num); result = Math.round(num * 100) / 100;
return result;
} });

layui上传文件配合进度条的更多相关文章

  1. Extjs 使用fileupload插件上传文件 带进度条显示

    一.首先我们看看官方给出的插件的解释: 一个文件上传表单项具有自定义的样式,并且可以控制按钮的文本和 像文本表单的空文本类似的其他特性. 它使用一个隐藏的文件输入元素,并在用户选择文件后 在form提 ...

  2. struts2上传文件添加进度条

    给文件上传添加进度条,整了两天终于成功了. 想要添加一个上传的进度条,通过分析,应该是需要不断的去访问服务器,询问上传文件的大小.通过已上传文件的大小, 和上传文件的总长度来评估上传的进度. 实现监听 ...

  3. asp.net mvc 实现上传文件带进度条

    本文乃是博主早期写的,此种思路虽然实现了,但固然不是最好的,仅做参考学习. 可以用js onprogress .fileinput .webuploader.jq ajaxsubmit等实现 思路:a ...

  4. vue项目上传文件以及进度条

    最近做项目的时候,需要上传自定义镜像.并且附带进度条,上网查询一下资料,经过一番折磨,也总算做出来了,把自己写项目的内容给大家分享一下. 先直接贴代码吧 1.首先声明一个formData对象. 2.把 ...

  5. jQuery上传文件显示进度条

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...

  6. XMLHttpRequest上传文件实现进度条

    话不多说,直接上代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  7. FormData上传文件 带进度条

    * jQuery ajax  FormData 上传文件 template $.ajax({ url: url, type: 'POST', data: new FormData(form), dat ...

  8. ASP.NET Jquery+ajax上传文件(带进度条)

    效果图 支持ie6+,chrome,ie6中文文件名会显示乱码. 上传时候会显示进度条. 需要jquery.uploadify.js插件,稍后会给出下载 前台代码 <%@ Page Langua ...

  9. ajaxSubmit() 上传文件和进度条显示

    1.  首先引用js文件 <script type="text/javascript" src="/js/jquery/jquery.form.js"&g ...

随机推荐

  1. Linux下 查找大文件

    find ./ -size +50M 显示当前路径下,大于50M的文件.(包含子文件夹内的文件)

  2. sudALSA lib dlmisc.c:236:(snd1_dlobj_cache_get) Cannot open shared library /usr/lib/alsa-lib/libasound_module_pcm_pulse.so

    我使用的系统是kali,默认的浏览器为iceweasel.默认的浏览器很好用!! 但是,给浏览器安装flash后,播放视频,会报错:有视频,无声音. 下面给出我的解决方案:

  3. 决策树--信息增益,信息增益比,Geni指数的理解

    决策树 是表示基于特征对实例进行分类的树形结构       从给定的训练数据集中,依据特征选择的准则,递归的选择最优划分特征,并根据此特征将训练数据进行分割,使得各子数据集有一个最好的分类的过程.   ...

  4. MySQL_DDL(不定时更新)

    1. //1.创建数据库,并指定字符集为utf8 create database rocker_oa default character set utf8; //2.创建用户,并指定密码为‘root’ ...

  5. 网络地址转换-NAT

    网络地址转换-NAT 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.NAT组网和常用术语 私网:局域网内IP 公网:因特网的公网ip地址 NAT设备:就是讲私网地址转换为公网的 ...

  6. 学习windows编程 day4 之 多边矩形填充

    #include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...

  7. java compareTo() 用法注意点

    转自:http://www.2cto.com/kf/201305/210466.html compareTo就是比较两个值,如果前者大于后者,返回1,等于返回0,小于返回-1,我下面给出了例子,由于比 ...

  8. VUE2.0 饿了吗视频学习笔记(二):新版本添加路由和显示Header

    https://gitee.com/1981633/vue_study.git 源码下载地址,随笔记动态更新中 webpack.dev.conf.js中添加两段代码 'use strict' cons ...

  9. 基于802.11Fuzz技术的研究

    转自安全客 关于无线的Fuzz最开始接触了解时,国内基本毛线都搜不到.经过几个月的资料搜集和学习,将大约全网的fuzz资料整理翻译分析并读懂写下,就为填补国内空白,也希望无线爱好者能多多交流. 在各个 ...

  10. asp.net mvc4 在EF新增的时候报对一个实体或多个实体验证失败

    //entity为空 是数据库上下文会验证实体验证 var entity = db.UserInfo.Where(u => u.Mobile == mobile).FirstOrDefault( ...