jQuery+ajax实现文件上传功能


Posted in jQuery onDecember 22, 2020

jQuery+ajax实现文件上传功能(显示文件上传进度),供大家参考,具体内容如下

具体实现步骤

1、定义UI结构,引入bootstrap的CSS文件和jQuery文件
2、给上传按钮绑定点击事件
3、验证是否选择了文件
4、向FormData中追加文件
5、使用ajax发起上传文件的请求
6、设置文件的路径
7、使用xhr获得文件上传的进度
8、当文件上传完成让进度条显示绿色

<style>
 #loading {
 width: 20px;
 height: 20px;
 }
 
 #img {
 display: block;
 width: 200px;
 height: 200px;
 border-radius: 50%;
 background-color: #abcdef;
 opacity: .5;
 }
</style>

<body>
 <!--multiple可以选择多个文件 -->
 <input type="file" multiple name="" id="ipt" multiple><button id="btn" type="submit">上传文件</button>
 <img id="loading" src="../img/loading.gif" alt="" style="display: none;">
 <!-- bootstrap中引入条件 -->
 <div class="progress" style="margin-top: 10px;width: 100px;margin-left: 10px;">
 <div id="progress" class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 0%;">
 0%
 </div>
 </div>
 <!-- 显示上传到服务器的图片 -->
 <img src="" alt="" id="img" style="display: none;">
 <script src="../lib/jquery-1.11.0.min.js"></script>
 <script>
 $(function() {
 $('#btn').on('click', function() {
 // 获取文件列表
 var file = $('#ipt')[0].files
  // 判断是否选择了文件
 if (file.length <= 0) {
  return alert('请上传文件')
 }
 // 创建formdata
 var fd = new FormData()
  // 向formdata中传入数据
  // fd.append()
  // file是一个伪数组
 fd.append('avatar', file[0])
  // 用ajax传送数据
 $.ajax({
  type: 'post',
  url: 'http://www.liulongbin.top:3006/api/upload/avatar',
  // 数据不需要编码
  contentType: false,
  // 数据对象不需要转换成键值对格式
  processData: false,
  data: fd,
  beforeSend: function() {
  $('#loading').show()
  },
  complete: function() {
  $('#loading').hide()
  },
  success: function(res) {
  // 判断是否接收成功
  if (res.status !== 200) {
  return alert(reg.msg)
  }
  $('#img').attr('src', 'http://www.liulongbin.top:3006' + res['url']).css('display', 'block')

  },
  xhr: function xhr() {
  var xhr = new XMLHttpRequest()
  // 获取文件上传的进度
  xhr.upload.onprogress = function(e) {
  // e.lengthComputable表示当前的进度是否是可以计算,返回布尔值
  if (e.lengthComputable) {
   // e.loaded表示下载了多少数据, e.total表示数据总量
   var percentComplete = Math.ceil((e.loaded / e.total) * 100)
   // 让进度条的宽度变化
   $('#progress').css('width', percentComplete)
   // 在进度条中显示百分比
   $('#progress').html(percentComplete + 'px')
  }
  }
  // 文件加载完成
  xhr.upload.onload = function() {
  $('#progress').removeClass('progress-bar progress-bar-striped').addClass('progress-bar progress-bar-success')
  }
  return xhr
  }

 })

 })

 })
 </script>
</body>

效果演示(slow3g状态)

jQuery+ajax实现文件上传功能

jQuery+ajax实现文件上传功能

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

jQuery 相关文章推荐
基于jQuery实现瀑布流页面
Apr 11 jQuery
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
jquery实现图片上传前本地预览
Apr 28 jQuery
jQuery遍历节点方法汇总(推荐)
May 13 jQuery
简单实现jQuery轮播效果
Aug 18 jQuery
jquery 键盘事件的使用方法详解
Sep 13 jQuery
jQuery第一次运行页面默认触发点击事件的实例
Jan 10 jQuery
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
JQuery animate动画应用示例
May 14 jQuery
jQuery属性选择器用法实例分析
Jun 28 jQuery
jQuery中DOM操作原则实例分析
Aug 01 jQuery
Jquery滑动门/tab切换实现方法完整示例
Jun 05 jQuery
jQuery实现动态向上滚动
Dec 21 #jQuery
Jquery+javascript实现支付网页数字键盘
Dec 21 #jQuery
jquery实现淡入淡出轮播图效果
Dec 13 #jQuery
jquery实现拖拽小方块效果
Dec 10 #jQuery
jQuery实现简单弹幕制作
Dec 10 #jQuery
JQuery绑定事件四种实现方法解析
Dec 02 #jQuery
jquery实现拖拽添加元素功能
Dec 01 #jQuery
You might like
php读取EXCEL文件 php excelreader读取excel文件
2012/12/06 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
PHP调用MySQL存储过程并返回值的方法
2014/12/26 PHP
php程序内部post数据的方法
2015/03/31 PHP
linux下为php添加iconv模块的方法
2016/02/28 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
iframe里面的元素触发父窗口元素事件的jquery代码
2014/10/19 Javascript
jQuery实现仿腾讯视频列表分页效果的方法
2015/08/07 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JS经典正则表达式笔试题汇总
2016/12/15 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
vue axios重复点击取消上一次请求封装的方法
2019/06/19 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
JavaScript接口实现方法实例分析
2020/05/16 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
python 获取本机ip地址的两个方法
2013/02/25 Python
Python 文件管理实例详解
2015/11/10 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
容易被忽略的Python内置类型
2020/09/03 Python
python3爬虫中多线程的优势总结
2020/11/24 Python
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
人事助理岗位职责
2013/11/18 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
2016年先进教师个人事迹材料
2016/02/26 职场文书
Requests什么的通通爬不了的Python超强反爬虫方案!
2021/05/20 Python
Vue h函数的使用详解
2022/02/18 Vue.js
mysql 生成连续日期及变量赋值
2022/03/20 MySQL
win10壁纸在哪个文件夹 win10桌面背景图片文件位置分享
2022/08/05 数码科技