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下操作Linux消息队列完成进程间通信的方法
Jul 24 PHP
php学习之数据类型之间的转换代码
May 29 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
探讨如何在php168_cms中提取验证码
Jun 08 PHP
学习php过程中的一些注意点的总结
Oct 25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(三)
Jun 23 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
Mar 20 PHP
thinkPHP分组后模板无法加载问题解决方法
Jul 12 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
Feb 06 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 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
删除无限级目录与文件代码共享
2006/07/12 PHP
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
JS获取各种浏览器窗口大小的方法
2014/01/14 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
利用jQuery实现打字机字幕效果实例代码
2016/09/02 Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
2017/07/13 Javascript
Vue+Vux项目实践完整代码
2017/11/30 Javascript
layerUI下的绑定事件实例代码
2018/08/17 Javascript
layer弹出层 iframe层去掉滚动条的实例代码
2018/08/17 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
2020/04/08 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
python实现批量修改图片格式和尺寸
2018/06/07 Python
pip命令无法使用的解决方法
2018/06/12 Python
python实现机器人卡牌
2019/10/06 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
员工考核管理制度
2014/02/02 职场文书
党员组织关系介绍信
2014/02/13 职场文书
2016三八妇女节慰问信
2015/11/30 职场文书
优质服务标语口号
2015/12/26 职场文书
学校运动会开幕词
2016/03/03 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
python微信智能AI机器人实现多种支付方式
2022/04/12 Python