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 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
加速XP搜索功能堪比vista
Mar 22 PHP
php 网上商城促销设计实例代码
Feb 17 PHP
基于php下载文件的详解
Jun 02 PHP
PHP类继承 extends使用介绍
Jan 14 PHP
ThinkPHP的L方法使用简介
Jun 18 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
PHP6新特性分析
Mar 03 PHP
php文件类型MIME对照表(比较全)
Oct 07 PHP
PHP Socket网络操作类定义与用法示例
Aug 30 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
浅析PHP中json_encode与json_decode的区别
Jul 15 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日期比较方法
2012/11/29 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
PHP手机号中间四位用星号*代替显示的实例
2017/06/02 PHP
自定义jQuery选项卡插件实例
2013/03/27 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
JavaScript 实现打印,打印预览,打印设置
2014/12/30 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
如何使用angularJs
2017/05/08 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
2020/07/20 Javascript
[05:05]DOTA2亚洲邀请赛 战队出场仪式
2015/02/07 DOTA
python计算最小优先级队列代码分享
2013/12/18 Python
python sort、sorted高级排序技巧
2014/11/21 Python
Python正则简单实例分析
2017/03/21 Python
tensorflow获取变量维度信息
2018/03/10 Python
python学习入门细节知识点
2018/03/29 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
2020/05/15 Python
python smtplib发送多个email联系人的实现
2020/10/09 Python
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
网络编辑职责
2014/03/01 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
协议书范文
2015/01/27 职场文书
大学生英文求职信范文
2015/03/19 职场文书
85句关于理想的名言警句大全
2019/08/22 职场文书