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插件Echarts实现的渐变色柱状图
Mar 23 jQuery
纯jQuery实现前端分页功能
Mar 23 jQuery
jQuery extend()详解及简单实例
May 06 jQuery
简单实现jQuery轮播效果
Aug 18 jQuery
jQuery实现火车票买票城市选择切换功能
Sep 15 jQuery
jquery+css3实现熊猫tv导航代码分享
Feb 12 jQuery
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
jQuery基于闭包实现的显示与隐藏div功能示例
Jun 09 jQuery
jQuery实现侧边栏隐藏与显示的方法详解
Dec 22 jQuery
jquery实现自定义树形表格的方法【自定义树形结构table】
Jul 12 jQuery
jquery实现商品sku多属性选择功能(商品详情页)
Dec 20 jQuery
jQuery操作动画完整实例分析
Jan 10 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
php防注
2007/01/15 PHP
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
php5对象复制、clone、浅复制与深复制实例详解
2019/08/14 PHP
如何在PHP中生成随机数
2020/06/04 PHP
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
IE8 中使用加速器(Activities)
2010/05/14 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
一个简单的全屏图片上下打开显示网页效果示例
2014/07/08 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
利用原生JS实现欢乐水果机小游戏
2020/04/23 Javascript
[03:11]完美世界DOTA2联赛PWL DAY8集锦
2020/11/09 DOTA
Python 迭代器工具包【推荐】
2016/05/06 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
python中对二维列表中一维列表的调用方法
2020/06/07 Python
python如何随机生成高强度密码
2020/08/19 Python
python3实现语音转文字(语音识别)和文字转语音(语音合成)
2020/10/14 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
爱心倡议书范文
2014/05/12 职场文书
励志演讲稿600字
2014/08/21 职场文书
网络销售员岗位职责
2015/04/11 职场文书
团结友爱主题班会
2015/08/13 职场文书
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android