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 相关文章推荐
构建简单的Webmail系统
Oct 09 PHP
php empty函数 使用说明
Aug 10 PHP
PHP循环语句笔记(foreach,list)
Nov 29 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
php的curl封装类用法实例
Nov 07 PHP
百度地图API使用方法详解
Aug 25 PHP
PHP魔术方法使用方法汇总
Feb 14 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
详解php实现页面静态化原理
Jun 21 PHP
总结PHP中初始化空数组的最佳方法
Feb 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
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php上传图片之时间戳命名(保存路径)
2014/08/15 PHP
php+jQuery递归调用POST循环请求示例
2016/10/14 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
EXTJS记事本 当CompositeField遇上RowEditor
2011/07/31 Javascript
JQuery之focus函数使用介绍
2013/08/20 Javascript
JS二维数组的定义说明
2014/03/03 Javascript
js实现文本框中焦点在最后位置
2014/03/04 Javascript
javascript:window.open弹出窗口的位置问题
2014/03/18 Javascript
window.returnValue使用方法示例介绍
2014/07/03 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
快速解决jquery.touchSwipe左右滑动和垂直滚动条冲突
2016/04/15 Javascript
使用Ajax生成的Excel文件并下载的实例
2016/11/21 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
详解微信UnionID作用
2019/05/15 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
Python实现备份文件实例
2014/09/16 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
python使用Tesseract库识别验证
2018/03/21 Python
python unittest实现api自动化测试
2018/04/04 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
python交换两个变量的值方法
2019/01/12 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
详解移动端Html5页面中1px边框的几种解决方法
2018/07/24 HTML / CSS
数学国培研修感言
2014/02/13 职场文书
《维生素c的故事》教学反思
2014/02/18 职场文书
企业挂职心得体会
2014/09/10 职场文书
沈阳故宫导游词
2015/01/31 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
MySQL索引是啥?不懂就问
2021/07/21 MySQL
JavaScript实现栈结构详细过程
2021/12/06 Javascript
关于maven依赖 ${xxx.version}报错问题
2022/01/18 Java/Android