jquery+ajax实现异步上传文件显示进度条


Posted in jQuery onAugust 17, 2020

前言:

今天项目中加了一个上传文件加进度条的需求,我就搞了一下。时间宝贵不多说,直接进入正题。

异步上传文件是要用到ajax里的一个小的知识点:xhr(XML Http Request)一个对象,xhr对象也是ajax一个核心。

关于使用它也很简单:就四步(下面这样写也可以向后端进行发送请求)

var xhr=new XMLHttpRequest()//创建xhr对象
  xhr.open('请求方式','请求的地址')
  xhr.send()//发佛那个请求
  xhr.onreadystatechange=function(){
    if (xhr.readyState==4){//得到服务端返回的状态码
     console.log(xhr.responseText)//输出返回结果
    }
   }

介绍完xhr继续说上传文件的:(注意:在展示效果的时候,有一个知识点,就是css样式,一定要在添加的在<b>之前,否则当三上传的文件较小的时候,会不显示效果)

jquery+ajax实现异步上传文件显示进度条

//上传文件
$("#btnSubmit").click(function () {
 if (!(confirm("确定提交吗?"))) {
  return;
 }
 else {
  var formData = new FormData();//上传文件必须写的
  var fileNum = $("#file_input")[0].files.length;//上传文件的个数
  if (fileNum > 0) {
   var file = $("#file_input")[0].files;//拿到文件
   //console.log(file[0].name);文件名
   var nameSuffix = file[0].name.split(".");
   if (nameSuffix[nameSuffix.length - 1] != "zip") {
    alert("上传的文件不是zip类型的文件,请重新上传");
    $("#file_input").val("");//将选择的文件清除
   }//判断文件大小
   //else if ($("#file_input")[0].files[0].size / 1024 / 1024 > 1024) {
    //alert("请选择文件大小为1G以内文件");
    //$("#file_input").val("");
    //return;
   //}
   else {
    //formData.append(key,value)的值不能一样,否则只会拿到一个文件
    formData.append('file', file[0]);//拿到zip文件
    //console.log(formData.get('file'));查看添加到formData的文件
   }    
   $.ajax({
    url: 'https://www.baidu.com',//用百度测试的。哈哈
    type: 'post',
    async:true, //这里要设置异步上传,才能成功调用myXhr.upload.addEventListener('progress',function(e){}),progress的回掉函数
    dataType: 'json',
    //Accept:'text/html;charset=UTF-8',
    processData: false,// 告诉jQuery不要去处理发送的数据
    contentType: false,// 告诉jQuery不要去设置Content-Type请求头,否则后端拿不到数据
    data: formData,
    xhr:function(){      
     var myXhr = $.ajaxSettings.xhr();
     if(myXhr.upload){ //检查上传的文件是否存在
      myXhr.upload.addEventListener('progress',function(e){       
       var loaded = e.loaded; //已经上传大小情况 
       var total = e.total; //附件总大小 
       var percent = Math.floor(100*loaded/total)+"%"; //已经上传的百分比 
       //console.log("已经上传了:"+percent); 
       //显示进度条    
       $("#content").css("width",percent).css("height",20).css("margin-top",8).css("backgroundColor","#33CCFF").css("color","white").html("<b>"+percent+"</b>");                                
      }, false); // for handling the progress of the upload
     }
     return myXhr;
    },     
    success:function(data){      
     alert("上传成功!!!!");      
    },
    error:function(){
     alert("上传失败!");
      //上传失败后清空div的样式和内容
     $("#content").css("width",0).css("height",0).css("margin-top",0).css("backgroundColor","").text("");
    }
   })
  }
  else {
   alert("请选择文件上传");
  }
 }
})

效果展示:

jquery+ajax实现异步上传文件显示进度条

更多精彩内容请参考专题《ajax上传技术汇总》,《javascript文件上传操作汇总》和《jQuery上传操作汇总》进行学习。

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

jQuery 相关文章推荐
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
vue单页应用中如何使用jquery的方法示例
Jul 27 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
Dec 24 jQuery
jQuery代码优化方法总结
Jan 29 jQuery
jQuery中的$是什么意思及 $. 和 $().的区别
Apr 20 jQuery
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
jQuery操作元素的内容和样式完整实例分析
Jan 10 jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 jQuery
jquery实现简单自动轮播图效果
Jul 29 jQuery
jQuery实现异步上传一个或多个文件
Aug 17 #jQuery
jQuery中event.target和this的区别详解
Aug 13 #jQuery
JQuery通过键盘控制键盘按下与松开触发事件
Aug 07 #jQuery
Jquery cookie插件实现原理代码解析
Aug 04 #jQuery
jQuery实现雪花飘落效果
Aug 02 #jQuery
jQuery实现滑动开关效果
Aug 02 #jQuery
jQuery实现开关灯效果
Aug 02 #jQuery
You might like
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
PHP中实现获取IP和地理位置类分享
2015/02/10 PHP
php中的explode()函数实例介绍
2019/01/18 PHP
js和php如何获取当前url的内容
2013/09/22 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
Bootstrap 3.x打印预览背景色与文字显示异常的解决
2016/11/06 Javascript
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
2019/09/15 jQuery
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
Django权限设置及验证方式
2020/05/13 Python
如何实现更换Jupyter Notebook内核Python版本
2020/05/18 Python
python实现图片转字符画的完整代码
2021/02/21 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
网站设计师的岗位职责
2013/11/21 职场文书
英文简历中的自荐信范文
2013/12/14 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
应聘教师求职信
2014/07/19 职场文书
2015年学校教科室工作总结
2015/07/20 职场文书
团委副书记工作总结
2015/08/14 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
python数据分析之用sklearn预测糖尿病
2021/04/22 Python
python3实现Dijkstra算法最短路径的实现
2021/05/12 Python
Python中OpenCV实现查找轮廓的实例
2021/06/08 Python
Matplotlib可视化之添加让统计图变得简单易懂的注释
2021/06/11 Python
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
Python办公自动化PPT批量转换操作
2021/09/15 Python
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers