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 相关文章推荐
无数据库的详细域名查询程序PHP版(3)
Oct 09 PHP
php adodb介绍
Mar 19 PHP
PHP 数组基础知识小结
Aug 20 PHP
PHP内核探索:变量概述
Jan 30 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
Mar 17 PHP
php自动载入类用法实例分析
Jun 24 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 PHP
thinkPHP+mysql+ajax实现的仿百度一下即时搜索效果详解
Jul 15 PHP
PHP读取Excel内的图片(phpspreadsheet和PHPExcel扩展库)
Nov 19 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
vs中通过剪切板循环来循环粘贴不同内容
2011/04/30 PHP
PHP array_multisort()函数的使用札记
2011/07/03 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
jQuery的链式调用浅析
2010/12/03 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
jQuery后代选择器用法实例
2014/12/23 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
vue2 中如何实现动态表单增删改查实例
2017/06/09 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
微信小程序自定义联系人弹窗
2020/05/26 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
JavaScript Array.flat()函数用法解析
2020/09/02 Javascript
python绘制立方体的方法
2018/07/02 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
Python的控制结构之For、While、If循环问题
2020/06/30 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
英国男士时尚网站:Dandy Fellow
2018/02/09 全球购物
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
爱国卫生月实施方案
2014/02/21 职场文书
2014年五一促销活动方案
2014/03/09 职场文书
交通文明倡议书
2014/05/16 职场文书
公司任命书范本
2014/06/04 职场文书
小爸爸观后感
2015/06/15 职场文书
python tkinter实现定时关机
2021/04/21 Python
Python实现机器学习算法的分类
2021/06/03 Python