PHP实现带进度条的Ajax文件上传功能示例


Posted in PHP onJuly 02, 2019

本文实例讲述了PHP实现带进度条的Ajax文件上传功能。分享给大家供大家参考,具体如下:

之前分享了一篇关于 php使用FileApi实现Ajax上传文件 的文章,里面的Ajax文件上传是不带进度条的,今天分享一篇关于带进度条的Ajax文件上传文章。

效果图:

PHP实现带进度条的Ajax文件上传功能示例

项目结构图:

PHP实现带进度条的Ajax文件上传功能示例

12-progress-upload.html文件:

页面中主要有一个上传文件控件,有文件被选择时响应selfile()方法,接着利用js读取上传文件、创建FormData对象和xhr对象,利用xhr2的新标准,写一个监听上传过程函数,请求11-fileApi.php文件。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>HTML5带进度条的上传功能</title>
  <link rel="stylesheet" href="">
<script>
  function selfile(){
    //js读取上传文件
    var file = document.getElementsByTagName('input')[0].files[0];
    //创建FormData对象
    var fd = new FormData();
    fd.append('pic',file);
    //ajax上传文件
    var xhr = new XMLHttpRequest();
    xhr.open('POST','11-fileApi.php',true);
    //利用xhr2的新标准,为上传过程,写一个监听函数
    xhr.upload.onprogress = function(ev){
      if(ev.lengthComputable){//文件长度可计算
        var percent = 100*ev.loaded/ev.total;//计算上传的百分比
        document.getElementById('bar').style.width = percent + '%';//更改上传进度
        document.getElementById('bar').innerHTML = parseInt(percent)+'%';//显示上传进度
      }
    }
    xhr.send(fd);//发送请求
  }
</script>
<style>
  #progress{
    width:500px;
    height:30px;
    border:1px solid green;
  }
  #bar{
    width:0%;
    height:100%;
    background-color: green;
  }
</style>
</head>
<body>
  <h1>HTML5带进度条的上传功能</h1>
  <div id="progress">
    <div id="bar"></div>
  </div>
  <input type="file" name="pic" onchange="selfile();" />
</body>
</html>

11-fileApi.php文件:

首先判断是否有文件上传,然后判断文件上传是否成功,最后移动文件至当前目录下的upload目录下,文件名不变。

<?php
/**
 * fileApi实现Ajax上传文件
 * @author webbc
 */
if(empty($_FILES)){
  exit('no file');
}
if($_FILES['pic']['error'] !== 0){
  exit('fail');
}
move_uploaded_file($_FILES['pic']['tmp_name'],'./upload/'.$_FILES['pic']['name']);
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
How do I change MySQL timezone?
Mar 26 PHP
php md5下16位和32位的实现代码
Apr 09 PHP
php反弹shell实现代码
Apr 22 PHP
php实现mysql同步的实现方法
Oct 21 PHP
ajax+php打造进度条 readyState各状态
Mar 20 PHP
一个PHP并发访问实例代码
Sep 06 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
Aug 04 PHP
PHP处理postfix邮件内容的方法
Jun 16 PHP
使用Huagepage和PGO来提升PHP7的执行性能
Nov 30 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
Mar 15 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
Sep 16 PHP
浅谈Laravel模板实体转义带来的坑
Oct 22 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
Jul 01 #PHP
PHP大文件切割上传并带进度条功能示例
Jul 01 #PHP
PHP大文件切割上传功能实例分析
Jul 01 #PHP
PHP使用反向Ajax技术实现在线客服系统详解
Jul 01 #PHP
PHP封装cURL工具类与应用示例
Jul 01 #PHP
PHP session垃圾回收机制实例分析
Jun 28 #PHP
PHP常用的类封装小结【4个工具类】
Jun 28 #PHP
You might like
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
PHP中使用glob函数实现一句话删除某个目录下的所有文件
2014/07/22 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
2019/07/06 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
2014/10/07 Javascript
JavaScript操作Cookie详解
2015/02/28 Javascript
JS打印组合功能
2016/08/04 Javascript
JavaScript 拖拽实例代码
2016/09/21 Javascript
Bootstrap和Java分页实例第一篇
2016/12/23 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
Vue页面切换和a链接的本质区别详解
2019/11/12 Javascript
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
python和shell获取文本内容的方法
2018/06/05 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
python中的协程深入理解
2019/06/10 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
python代码如何实现余弦相似性计算
2020/02/09 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
劳资员岗位职责
2013/11/11 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
合作投资意向书
2014/04/01 职场文书
学校施工安全责任书
2015/01/29 职场文书
2015年酒店工作总结
2015/04/28 职场文书
军训新闻稿范文
2015/07/17 职场文书
公司员工离职感言
2015/08/03 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
2016最新离婚协议书范本及程序
2016/03/18 职场文书