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插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
Jquery把获取到的input值转换成json
May 15 jQuery
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
jQuery滚动插件scrollable.js用法分析
May 25 jQuery
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
详解jquery选择器的原理
Aug 01 jQuery
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
jQuery使用each遍历循环的方法
Sep 19 jQuery
JQuery事件委托原理与用法实例分析
May 13 jQuery
jQuery实现的图片点击放大缩小功能案例
Jan 02 jQuery
jQuery 实现扁平式小清新导航
Jul 07 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中的字符串函数
2006/11/24 PHP
php给图片添加文字水印方法汇总
2015/08/27 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
PHP实现通过CURL上传文件功能示例
2018/05/30 PHP
jQuery 操作option的实现代码
2011/03/03 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery可见性过滤选择器使用示例
2013/06/24 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
javascript实现连续赋值
2015/08/10 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
jQuery插件artDialog.js使用与关闭方法示例
2017/10/09 jQuery
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
React实现全局组件的Toast轻提示效果
2018/09/21 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
微信小程序自定义tabBar的踩坑实践记录
2020/11/06 Javascript
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python3爬虫中关于中文分词的详解
2020/07/29 Python
Python爬取微信小程序Charles实现过程图解
2020/09/29 Python
python中把元组转换为namedtuple方法
2020/12/09 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
EJB的基本架构
2016/09/22 面试题
Delphi工程师笔试题
2013/09/21 面试题
预备党员承诺书
2014/03/25 职场文书
法制宣传月活动方案
2014/05/11 职场文书
项目建议书模板
2014/05/12 职场文书
完整版商业计划书
2014/09/15 职场文书
面试必问:圣杯布局和双飞翼布局的区别
2021/05/13 HTML / CSS
解读Vue组件注册方式
2021/05/15 Vue.js
使用JS实现简易计算器
2021/06/14 Javascript