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实现字体颜色渐变效果的方法
Mar 29 jQuery
jQuery鼠标悬停内容动画切换效果
Apr 27 jQuery
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
jQuery中each方法的使用详解
Mar 18 jQuery
webpack里使用jquery.mCustomScrollbar插件的方法
May 30 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 jQuery
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
Jun 18 jQuery
layui+jquery支持IE8的表格分页方法
Sep 28 jQuery
jQuery操作事件完整实例分析
Jan 10 jQuery
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
Feb 04 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中ob_flush和flush的区别
2014/11/27 PHP
php邮件发送的两种方式
2020/04/28 PHP
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
Jquery中getJSON在asp.net中的使用说明
2011/03/10 Javascript
24款非常有用的 jQuery 插件分享
2011/04/06 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
js返回顶部实例分享
2016/12/21 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
2018/09/03 Javascript
详解easyui 切换主题皮肤
2019/04/04 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
Python os模块学习笔记
2015/06/21 Python
Python自动登录126邮箱的方法
2015/07/10 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
python线程池threadpool实现篇
2018/04/27 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
Django Model中字段(field)的各种选项说明
2020/05/19 Python
python适合做数据挖掘吗
2020/06/16 Python
python实现定时发送邮件到指定邮箱
2020/12/23 Python
香港通票:Hong Kong Pass
2019/02/26 全球购物
厨师岗位职责
2013/11/12 职场文书
眼镜促销方案
2014/03/15 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
公司授权委托书范文
2014/09/21 职场文书
银行稽核岗位职责
2015/04/13 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang
Java 深入探究讲解简单工厂模式
2022/04/07 Java/Android