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同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
jQuery ajax调用webservice注意事项
Oct 08 jQuery
jQuery实现动态控制页面元素的方法分析
Dec 20 jQuery
实现jquery放大镜的两种方法
Feb 22 jQuery
jQuery属性选择器用法实例分析
Jun 28 jQuery
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
JQuery获得内容和属性方法解析
May 30 jQuery
jQuery中event.target和this的区别详解
Aug 13 jQuery
JS实现选项卡插件的两种写法(jQuery和class)
Dec 30 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
我的论坛源代码(三)
2006/10/09 PHP
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
php Imagick获取图片RGB颜色值
2014/07/28 PHP
实例讲解php数据访问
2016/05/09 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
javascript框架设计之种子模块
2015/06/23 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
简单理解Vue条件渲染
2016/12/03 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
vue利用axios来完成数据的交互
2018/03/23 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
微信小程序自定义导航栏实例代码
2019/04/05 Javascript
[05:04]完美世界携手游戏风云打造 卡尔工作室地图界面篇
2013/04/23 DOTA
Python3 queue队列模块详细介绍
2018/01/05 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
使用tensorflow实现线性svm
2018/09/07 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
基于pandas中expand的作用详解
2019/12/17 Python
Opencv求取连通区域重心实例
2020/06/04 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
python安装及变量名介绍详解
2020/12/12 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
论文诚信承诺书
2014/05/23 职场文书
服装设计专业自荐信
2014/06/17 职场文书
数学教师个人工作总结
2015/02/06 职场文书
运动会通讯稿600字
2015/07/20 职场文书
python使用pymysql模块操作MySQL
2021/06/16 Python