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插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
Mar 23 jQuery
jQuery插件FusionCharts绘制2D双折线图效果示例【附demo源码】
Apr 14 jQuery
jquery中$.fn和图片滚动效果实现的必备知识总结
Apr 21 jQuery
jQuery实现div跟随鼠标移动
Aug 20 jQuery
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 jQuery
JQuery选中select组件被选中的值方法
Mar 08 jQuery
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
jquery实现Ajax请求的几种常见方式总结
May 28 jQuery
jQuery 隐藏/显示效果函数用法实例分析
May 20 jQuery
基于jQuery拖拽事件的封装
Nov 29 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
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
使用GruntJS链接与压缩多个JavaScript文件过程详解
2013/08/02 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
jQuery实现视频作为全屏幕背景
2014/12/18 Javascript
JavaScript中利用jQuery绑定事件的几种方式小结
2016/03/06 Javascript
jQuery soColorPacker 网页拾色器
2016/06/22 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
详解如何在微信小程序开发中正确的使用vant ui组件
2018/09/13 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
JavaScript canvas绘制渐变颜色的矩形
2020/02/18 Javascript
你准备好迎接vue3.0了吗
2020/04/28 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
Vue Render函数创建DOM节点代码实例
2020/07/08 Javascript
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
python对execl 处理操作代码
2020/06/22 Python
pycharm 添加解释器的方法步骤
2020/08/31 Python
python 多线程中join()的作用
2020/10/29 Python
python 实现逻辑回归
2020/12/30 Python
Python wordcloud库安装方法总结
2020/12/31 Python
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
linux面试题参考答案(8)
2016/04/19 面试题
领导检查欢迎词
2014/01/14 职场文书
业务内勤岗位职责
2015/04/13 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
2016年4月份红领巾广播稿
2015/12/21 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书
MySQL GTID复制的具体使用
2022/05/20 MySQL