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导航条固定定位效果实例代码
May 26 jQuery
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
jQuery Validate表单验证插件实现代码
Jun 08 jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 jQuery
jQuery制作全屏宽度固定高度轮播图(实例讲解)
Jul 08 jQuery
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 jQuery
jQuery中库的引用方法
Jan 06 jQuery
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
jQuery.parseJSON()函数详解
Feb 28 jQuery
基于jquery ajax的多文件上传进度条过程解析
Sep 11 jQuery
jQuery实现消息弹出框效果
Dec 10 jQuery
jQuery表单校验插件validator使用方法详解
Feb 18 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
如何冲泡挂耳包咖啡?技巧是什么
2021/03/04 冲泡冲煮
用PHP实现多级树型菜单
2006/10/09 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
JS target与currentTarget区别说明
2011/08/28 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
JS、DOM和JQuery之间的关系示例分析
2014/04/09 Javascript
js星星评分效果
2014/07/24 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
关于JavaScript中事件绑定的方法总结
2016/10/26 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
JS实现生成由字母与数字组合的随机字符串功能详解
2018/05/25 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
[40:16]TFT vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
[04:15]DOTA2-DPC中国联赛1月19日Recap集锦
2021/03/11 DOTA
Python标准库urllib2的一些使用细节总结
2015/03/16 Python
Python实现读取并保存文件的类
2017/05/11 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Django 视图层(view)的使用
2018/11/09 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
Python selenium爬取微博数据代码实例
2020/05/22 Python
python连接mongodb数据库操作数据示例
2020/11/30 Python
荷兰网上鞋店:Ziengs.nl
2017/01/02 全球购物
计算机学生求职信范文
2014/01/30 职场文书
乡镇信息公开实施方案
2014/03/23 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
2015年工会工作总结
2015/03/30 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
自考生自我评价
2019/06/21 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏