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 30 jQuery
jquery+css实现侧边导航栏效果
Jun 12 jQuery
jQuery鼠标移动图片上实现放大效果
Jun 25 jQuery
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
JQuery判断正整数整理小结
Aug 21 jQuery
jquery animate动画持续运动的实例
Nov 29 jQuery
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
jQuery中复合选择器简单用法示例
Mar 31 jQuery
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
jquery 验证用户名是否重复代码实例
May 14 jQuery
jQuery实现带进度条的轮播图
Sep 13 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
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
javaScript函数中执行C#代码中的函数方法总结
2013/08/07 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
jquery 删除字符串最后一个字符的方法解析
2014/02/11 Javascript
动态显示可输入的字数提示还可以输入的字数
2014/04/01 Javascript
推荐 21 款优秀的高性能 Node.js 开发框架
2014/08/18 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
使用jquery动态加载js文件的方法
2014/12/24 Javascript
解决jquery无法找到其他父级子集问题的方法
2016/05/10 Javascript
js实现文字选中分享功能
2017/01/25 Javascript
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
手把手教你 CKEDITOR 4 扩展插件制作
2019/06/18 Javascript
使用Vue调取接口,并渲染数据的示例代码
2019/10/28 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
python数据结构之图深度优先和广度优先实例详解
2015/07/08 Python
python中列表和元组的区别
2017/12/18 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
英国最大的老式糖果店:A Quarter Of
2017/04/08 全球购物
给排水工程师岗位职责
2013/11/21 职场文书
法定代表人授权委托书
2014/04/04 职场文书
《从现在开始》教学反思
2014/04/15 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
民主生活会主持词
2015/07/01 职场文书
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android
nginx sticky实现基于cookie负载均衡示例详解
2022/12/24 Servers