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 相关文章推荐
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
THINKPHP+JS实现缩放图片式截图的实现
Mar 07 PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
PHP中读取照片exif信息的方法
Aug 20 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
Zend Framework教程之模型Model基本规则和使用方法
Mar 04 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
Aug 17 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
php中字符串和整数比较的操作方法
Jun 06 PHP
laravel config文件配置全局变量的例子
Oct 13 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反弹shell实现代码
2009/04/22 PHP
php删除文件夹及其文件夹下所有文件的函数代码
2013/01/23 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
js支持键盘控制的左右切换立体式图片轮播效果代码分享
2015/08/26 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
three.js加载obj模型的实例代码
2017/11/10 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
layui使用数据表格实现购物车功能
2019/07/26 Javascript
[02:51]DOTA2英雄基础教程 艾欧
2014/01/13 DOTA
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
2016/12/10 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
python3.x实现发送邮件功能
2018/05/22 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python对视频画框标记后保存的方法
2018/12/07 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
python3 re返回形式总结
2020/11/20 Python
python 制作磁力搜索工具
2021/03/04 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
幼儿园招生广告
2014/03/19 职场文书
计算机售后服务承诺书
2014/05/30 职场文书
2014年初级职称工作总结
2014/12/08 职场文书
行政上诉状范文
2015/05/23 职场文书
可怜妈妈观后感
2015/06/09 职场文书
看上去很美观后感
2015/06/10 职场文书
电视新闻稿
2015/07/17 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
golang正则之命名分组方式
2021/04/25 Golang
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
mysql联合索引的使用规则
2021/06/23 MySQL
nginx常用配置conf的示例代码详解
2022/03/21 Servers