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插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
Mar 23 jQuery
jquery实现静态搜索功能(可输入搜索文字)
Mar 28 jQuery
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 jQuery
jQuery中复合选择器简单用法示例
Mar 31 jQuery
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
jquery分页插件pagination使用教程
Oct 23 jQuery
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
jQuery pager.js 插件动态分页功能实例分析
Aug 02 jQuery
jquery实现直播视频弹幕效果
Feb 25 jQuery
jQuery开发仿QQ版音乐播放器
Jul 10 jQuery
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 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数据类型判断函数有哪些
2013/09/23 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
定义select的边框颜色
2008/04/28 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
javascript面向对象之二 命名空间
2011/02/08 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
基于JavaScript实现购物网站商品放大镜效果
2016/09/06 Javascript
jQuery使用正则验证15/18身份证的方法示例
2017/04/27 jQuery
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
Vue项目中使用better-scroll实现菜单映射功能方法
2019/09/11 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
支付宝小程序实现省市区三级联动
2020/06/21 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
浅谈五大Python Web框架
2017/03/20 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
python读出当前时间精度到秒的代码
2019/07/05 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
在终端启动Python时报错的解决方案
2020/11/20 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
Engel & Bengel官网:婴儿推车、儿童房家具和婴儿设备
2019/12/28 全球购物
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
会务接待方案
2014/02/27 职场文书
勤俭节约倡议书
2014/04/14 职场文书
小学数学课后反思
2014/04/23 职场文书
政府信息公开实施方案
2014/05/09 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
淘宝客服专员岗位职责
2015/04/07 职场文书