PHP+Ajax实现上传文件进度条动态显示进度功能


Posted in PHP onJune 04, 2018

PHP+Ajax实现上传文件进度条动态显示进度功能

说个前提:PHP配置文件中规定默认上传文件大小限制2M以下,如需上传大文件需同时更改php.ini中的upload_max_filesizemax_execution_time以及post_max_size的值。

主界面以及Ajax实现:index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
  <meta charset="UTF-8"> 
  <title>上传文件</title> 
  <script type="text/javascript"> 
    function sub() { 
      var obj = new XMLHttpRequest(); 
      obj.onreadystatechange = function() { 
        if (obj.status == 200 && obj.readyState == 4) { 
          document.getElementById('con').innerHTML = obj.responseText; 
        } 
      } 
      // 通过Ajax对象的upload属性的onprogress事件感知当前文件上传状态 
      obj.upload.onprogress = function(evt) { 
        // 上传附件大小的百分比 
        var per = Math.floor((evt.loaded / evt.total) * 100) + "%"; 
        // 当上传文件时显示进度条 
        document.getElementById('parent').style.display = 'block'; 
        // 通过上传百分比设置进度条样式的宽度 
        document.getElementById('son').style.width = per; 
        // 在进度条上显示上传的进度值 
        document.getElementById('son').innerHTML = per; 
      } 
      // 通过FormData收集零散的文件上传信息 
      var fm = document.getElementById('userfile3').files[0]; 
      var fd = new FormData(); 
      fd.append('userfile', fm); 
      obj.open("post", "upload.php"); 
      obj.send(fd); 
    } 
  </script> 
  <style type="text/css"> 
    #parent { 
      width: 200px; 
      height: 20px; 
      border: 2px solid gray; 
      background: lightgray; 
      display: none; 
    } 
    #son { 
      width: 0; 
      height: 100%; 
      background: lightgreen; 
      text-align: center; 
    } 
  </style> 
</head> 
<body> 
  <h2>Ajax实现进度条文件上传</h2> 
  <div id="parent"> 
    <div id="son"></div> 
  </div> 
  <p id="con"></p> 
  <input type="file" name="userfile" id="userfile3"><br><br> 
  <input type="button" name="btn" value="文件上传" onclick="sub()"> 
</body> 
</html>

php处理上传文件:upload.php

<?php  
  // 上传文件进行简单错误过滤 
  if ($_FILES['userfile']['error'] > 0) { 
    exit("上传文件有错".$_FILES['userfile']['error']); 
  } 
  // 定义存放上传文件的真实路径 
  $path = './upload/'; 
  // 定义存放上传文件的真实路径名字 
  $name = $_FILES['userfile']['name']; 
  // 将文件的名字的字符编码从UTF-8转成GB2312 
  $name = iconv("UTF-8", "GB2312", $name); 
  // 将上传文件移动到指定目录文件中 
  if (move_uploaded_file($_FILES['userfile']['tmp_name'], $path.$name)) { 
    echo "文件上传成功"; 
  } else { 
    echo "文件上传失败"; 
  } 
 ?>

总结

以上所述是小编给大家介绍的PHP+Ajax实现上传文件进度条动态显示进度功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
PHP新手上路(十)
Oct 09 PHP
PHP 模板高级篇总结
Dec 21 PHP
php 分页类 扩展代码
Jun 11 PHP
php GeoIP的使用教程
Mar 09 PHP
关于mysql字符集设置了character_set_client=binary 在gbk情况下会出现表描述是乱码的情况
Jan 06 PHP
php生成N个不重复的随机数实例
Nov 12 PHP
PHP提交表单失败后如何保留已经填写的信息
Jun 20 PHP
使用PHPExcel操作Excel用法实例分析
Mar 26 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
Yii操作数据库实现动态获取表名的方法
Mar 29 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
PHP自定义序列化接口Serializable用法分析
Dec 29 PHP
Laravel利用gulp如何构建前端资源详解
Jun 03 #PHP
PHP学习记录之数组函数
Jun 01 #PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
Jun 01 #PHP
PHP+MySQL实现模糊查询员工信息功能示例
Jun 01 #PHP
php post json参数的传递和接收处理方法
May 31 #PHP
PHP调用接口用post方法传送json数据的实例
May 31 #PHP
ThinkPHP5 验证器的具体使用
May 31 #PHP
You might like
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php函数的常用方法及注意之处小结
2011/07/10 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php递归遍历多维数组的方法
2015/04/18 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
2016/03/17 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
原来Jquery.load的方法可以一直load下去
2011/03/28 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
jquery点击切换背景色的简单实例
2016/08/25 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
vue中实现移动端的scroll滚动方法
2018/03/03 Javascript
浅谈jquery fullpage 插件增加头部和版权的方法
2018/03/20 jQuery
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
使用 Node.js 实现图片的动态裁切及算法实例代码详解
2018/09/29 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
Python高级应用实例对比:高效计算大文件中的最长行的长度
2014/06/08 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
值得收藏的10道python 面试题
2019/04/15 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
用python介绍4种常用的单链表翻转的方法小结
2020/02/24 Python
交通安全演讲稿
2014/01/07 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
人事部专员岗位职责
2014/03/04 职场文书
学校教学工作总结2015
2015/05/19 职场文书
保外就医申请书范文
2015/08/06 职场文书
农贸批发市场管理制度
2015/08/07 职场文书
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android