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解析获取JSON数据
Apr 08 jQuery
jQuery.ajax向后台传递数组问题的解决方法
May 12 jQuery
JQuery 获取Dom元素的实例讲解
Jul 08 jQuery
jqueryUI tab标签页代码分享
Oct 09 jQuery
jquery中有哪些api jQuery主要API
Nov 20 jQuery
jQuery中库的引用方法
Jan 06 jQuery
jQuery实现动态显示select下拉列表数据的方法
Feb 05 jQuery
JQuery选中select组件被选中的值方法
Mar 08 jQuery
jQuery实现导航样式布局操作示例【可自定义样式布局】
Jul 24 jQuery
jQuery pjax 应用简单示例
Sep 20 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
2017/06/16 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
php命令行模式代码实例详解
2021/02/26 PHP
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
jQuery实现控制文字内容溢出用省略号(…)表示的方法
2016/02/26 Javascript
js 转义字符及URI编码详解
2017/02/28 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
NodeJS 中Stream 的基本使用
2018/07/30 NodeJs
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
微信小程序生成二维码的示例代码
2019/03/29 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
使用Python实现下载网易云音乐的高清MV
2015/03/16 Python
Python中的urllib模块使用详解
2015/07/07 Python
python调用Delphi写的Dll代码示例
2017/12/05 Python
Python操作word常见方法示例【win32com与docx模块】
2018/07/17 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
python编写简单端口扫描器
2019/09/04 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
李维斯牛仔裤英国官方网站:Levi’s英国
2019/10/10 全球购物
平面设计岗位职责
2013/12/14 职场文书
2015年圣诞节活动总结
2015/03/24 职场文书
2016年幼儿园教师师德承诺书
2016/03/25 职场文书
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
SQL实现LeetCode(180.连续的数字)
2021/08/04 MySQL
Python采集壁纸并实现炫轮播
2022/04/30 Python
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android