当前位置: 首页 > news >正文

Ajax实现一个简单的文件上传进度条

Ajax实现一个简单的文件上传进度条功能。

1. HTML代码

<div class="form-group required"><label class="col-sm-3 control-label">文件名:</label><div class="col-sm-6"><input id="fileName" name="fileName" class="form-control" type="text"><div class="progress-div"><span id="progress"></span></div></div><input id="file-btn" class="btn btn-warning" type="button" value="上传文件" onclick="$('input[id=rel_file]').click()">
</div>

2. CSS样式

.progress-div{width: 100%;height: 20px;background-color: #ffffff;
}
#progress{height: 20px;background-color: #1d9e7d;display: inline-block;
}

3. JS代码

function save() {$('#submitBtn').attr('disabled',true);parent.layer.msg("正在上传,请稍后 ...");var data = new FormData($('#DatumForm')[0]);var url = irsCtxPath + "/biz/datumSave/upload";doUpload(data, url, uploadSuccess, 'progress');$('#submitBtn').attr('disabled',false);
}// 上传成功后的回调函数
function uploadSuccess(data) {if (data.code == 0) {parent.layer.msg("操作成功");parent.reLoad();var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引parent.layer.close(index);} else {parent.layer.alert(data.msg);}
}// 上传
function doUpload(data, url, callBack, progressId) {$.ajax({url: url,type: "POST",data: data,xhr: function(){ //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数var myXhr = $.ajaxSettings.xhr();if(myXhr.upload){ //检查upload属性是否存在//绑定progress事件的回调函数myXhr.upload.addEventListener('progress',function(e) {progressHandlingFunction(e, '#' + progressId)}, false);}return myXhr; //xhr对象返回给jQuery使用},success : function(data) {callBack(data);},processData:false,contentType:false});
}//上传进度回调函数:
function progressHandlingFunction(e, progressId) {if (e.lengthComputable) {$(progressId).attr({value : e.loaded, max : e.total}); //更新数据到进度条var percent = e.loaded/e.total*100;if (percent < 100) {$(progressId).html(" 正在努力上传中,已完成 " + percent.toFixed(2) + "%");} else {$(progressId).html(" 已完成 ");}$(progressId).css('width', percent.toFixed(2) + "%");}
}

4. 效果图
(这里不贴图了)

.
感谢您的阅读,欢迎参观我的个人网站:小嗨词典【 https://www.happydict.cn】
.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何将西瓜视频保存到本地(方法)
  • 企业会议室预约管理系统
  • 边缘检测运用
  • 基于单片机实现的的多点分布室内环境监测系统
  • ORA-24067: exceeded maximum number of subscribers for queue ADMIN.SMS_MT_QUEUE
  • 代码随想录 第九章 动态规划part03 01背包问题 二维
  • 力扣100题——栈和堆
  • 【GNSS】PPPH软件操作手册翻译
  • CATH标识符解读
  • 记录近期iOS开发几个报错及解决方案
  • sql中的APPLY 和 LATERAL
  • 生成式人工智能在新加坡的发展现状和地位
  • 文档大模型,能否真正解决非结构化数据难题
  • 深入理解java并发编程之aqs框架
  • Java工具插件
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Js基础知识(一) - 变量
  • js写一个简单的选项卡
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Terraform入门 - 3. 变更基础设施
  • Web设计流程优化:网页效果图设计新思路
  • zookeeper系列(七)实战分布式命名服务
  • 创建一种深思熟虑的文化
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 微服务核心架构梳理
  • 微服务入门【系列视频课程】
  • 优秀架构师必须掌握的架构思维
  • AI算硅基生命吗,为什么?
  • 组复制官方翻译九、Group Replication Technical Details
  • ​数据结构之初始二叉树(3)
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (6)STL算法之转换
  • (分享)自己整理的一些简单awk实用语句
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三)uboot源码分析
  • (五)Python 垃圾回收机制
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 博客園正式支援VHDL語法著色功能 (SOC) (VHDL)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .net core 6 使用注解自动注入实例,无需构造注入 autowrite4net
  • .Net Core 微服务之Consul(二)-集群搭建
  • .Net Core中Quartz的使用方法
  • .net dataexcel winform控件 更新 日志
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET 常见的偏门问题
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件