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读取flv文件的播放时间长度
Sep 03 PHP
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
9个PHP开发常用功能函数小结
Jul 15 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
Aug 20 PHP
PHP中基本HTTP认证技巧分析
Mar 16 PHP
浅析iis7.5安装配置php环境
May 10 PHP
PHP实现递归复制整个文件夹的类实例
Aug 03 PHP
微信开发之网页授权获取用户信息(二)
Jan 08 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
May 23 PHP
php从数据库中读取特定的行(实例)
Jun 02 PHP
PHP使用DOM对XML解析处理操作示例
Jul 04 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中取得URL的根域名的代码
2011/03/23 PHP
php递归创建和删除文件夹的代码小结
2012/04/13 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
2014/05/10 PHP
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
使表格的标题列可左右拉伸jquery插件封装
2014/11/24 Javascript
jQuery中:not选择器用法实例
2014/12/30 Javascript
Node.js事件驱动
2015/06/18 Javascript
javascript将DOM节点添加到文档的方法实例分析
2015/08/04 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
微信小程序开发探究
2016/12/27 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
JavaScript闭包和回调详解
2017/08/09 Javascript
NodeJS收发GET和POST请求的示例代码
2017/08/25 NodeJs
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
搭建基于express框架运行环境的方法步骤
2018/11/15 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
[00:12]2018DOTA2亚洲邀请赛 sylar表现SOLO技艺
2018/04/06 DOTA
Python中使用中文的方法
2011/02/19 Python
python实现批量下载新浪博客的方法
2015/06/15 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
2019/03/05 Python
python实现发送QQ邮件(可加附件)
2020/12/23 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
详解HTML5中的标签
2015/06/19 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
阿迪达斯荷兰官方网站:adidas荷兰
2018/03/16 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
个人找工作的自我评价
2013/10/17 职场文书
安全生产网格化管理实施方案
2014/03/01 职场文书
创建文明城市标语
2014/06/16 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技