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 相关文章推荐
一个取得文件扩展名的函数
Oct 09 PHP
php中sprintf与printf函数用法区别解析
Feb 17 PHP
PHP调用JAVA的WebService简单实例
Mar 11 PHP
学习php开源项目的源码指南
Dec 21 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
php连接mysql数据库
Mar 21 PHP
在php7中MongoDB实现模糊查询的方法详解
May 03 PHP
php文件上传类的分享
Jul 06 PHP
PHP编程实现阳历转换为阴历的方法实例
Aug 08 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 PHP
php 多继承的几种常见实现方法示例
Nov 18 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实现天干地支计算器示例
2014/03/14 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
Prototype Array对象 学习
2009/07/19 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
捕获和分析JavaScript Error的方法
2014/03/25 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
JavaScript中的bold()方法使用详解
2015/06/08 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
Angular 数据请求的实现方法
2018/05/07 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
详解Python读取配置文件模块ConfigParser
2017/05/11 Python
python生成每日报表数据(Excel)并邮件发送的实例
2019/02/03 Python
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
Python 使用office365邮箱的示例
2020/10/29 Python
老板电器官方购物商城:老板油烟机、燃气灶、消毒柜、电烤箱
2018/05/30 全球购物
物理教育专业毕业生推荐信
2013/11/03 职场文书
英语专业毕业生自荐信范文
2013/12/31 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
初中班级口号
2014/06/09 职场文书
法制宣传口号
2014/06/16 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
2015年领班工作总结
2015/04/29 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
你需要掌握的20个Python常用技巧
2022/02/28 Python
4种方法python批量修改替换列表中元素
2022/04/07 Python