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中通过ADODB库实现调用Access数据库之修正版本
Dec 31 PHP
php array_merge下进行数组合并的代码
Jul 22 PHP
中英文字符串翻转函数
Dec 09 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
解析strtr函数的效率问题
Jun 26 PHP
PHP curl 获取响应的状态码的方法
Jan 13 PHP
php把数组值转换成键的方法
Jul 13 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
Laravel框架处理用户的请求操作详解
Dec 20 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创建sprite
2014/02/11 PHP
PHP的error_reporting错误级别变量对照表
2014/07/08 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
使用URL传输SESSION信息
2015/07/14 PHP
浅谈php中curl、fsockopen的应用
2016/12/10 PHP
PHP正则删除HTML代码中宽高样式的方法
2017/06/12 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
2018/12/20 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
JavaScript中for-in遍历方式示例介绍
2014/02/11 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
JS实现定时任务每隔N秒请求后台setInterval定时和ajax请求问题
2017/10/15 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
React中的render何时执行过程
2018/04/13 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
Python 备份程序代码实现
2017/03/06 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
python与pycharm有何区别
2020/07/01 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
澳大利亚潮流尖端的快时尚品牌:Cotton On
2016/09/26 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
生产副总岗位职责
2013/11/28 职场文书
关爱留守儿童标语
2014/06/18 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
党支部三严三实对照检查材料思想汇报
2014/09/29 职场文书
灵魂歌王观后感
2015/06/17 职场文书
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis
mysql的单列多值存储实例详解
2022/04/05 MySQL
python微信智能AI机器人实现多种支付方式
2022/04/12 Python