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 相关文章推荐
56.com视频采集接口程序(PHP)
Sep 22 PHP
PHP 数组遍历方法大全(foreach,list,each)
Jun 30 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
一个简单的php加密解密函数(动态加密)
Jun 19 PHP
PHP开发微信支付的代码分享
May 25 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
PHP开发注意事项总结
Feb 04 PHP
CI(CodeIgniter)模型用法实例分析
Jan 20 PHP
php cookie工作原理与实例详解
Jul 18 PHP
PHP 等比例缩放图片详解及实例代码
Sep 18 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 PHP
PHP 文件上传限制问题
Sep 01 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
一个基于PDO的数据库操作类
2011/03/24 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php三维数组去重(示例代码)
2013/11/26 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
JavaScript 继承详解(一)
2009/07/13 Javascript
JavaScript(js)设置默认输入焦点(focus)
2012/12/28 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
2016/06/22 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
js中int和string数据类型互相转化实例
2019/01/16 Javascript
JavaScript中的函数式编程详解
2020/08/22 Javascript
详细探究Python中的字典容器
2015/04/14 Python
python实现数独算法实例
2015/06/09 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
Scrapy的简单使用教程
2017/10/24 Python
python装饰器实例大详解
2017/10/25 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
2019/08/08 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
keras 权重保存和权重载入方式
2020/05/21 Python
Python函数__new__及__init__作用及区别解析
2020/08/31 Python
HTML5在a标签内放置块级元素示例代码
2013/08/23 HTML / CSS
英文自我鉴定
2013/12/10 职场文书
小学课外阅读总结
2014/07/09 职场文书
离婚财产处理协议书
2014/09/30 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
MySQL和Oracle批量插入SQL的通用写法示例
2021/11/17 MySQL
MySql如何将查询的出来的字段进行转换
2022/06/14 MySQL