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 文章采集正则代码
Dec 28 PHP
php实现单链表的实例代码
Mar 22 PHP
浅析PHP substr,mb_substr以及mb_strcut的区别和用法
Jun 21 PHP
跟我学Laravel之请求与输入
Oct 15 PHP
php post大量数据时发现数据丢失问题解决方法
Jun 20 PHP
php分页原理 分页代码 分页类制作教程
Sep 23 PHP
PHP请求远程地址设置超时时间的解决方法
Oct 29 PHP
PHP实现求解最长公共子串问题的方法
Nov 17 PHP
PHP的RSA加密解密方法以及开发接口使用
Feb 11 PHP
ThinkPHP3.2框架操作Redis的方法分析
May 05 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 PHP
PHP7移除的扩展和SAPI
Mar 09 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
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
PHP实现的观察者模式实例
2017/06/21 PHP
php如何获取Http请求
2020/04/30 PHP
jQuery一步一步实现跨浏览器的可编辑表格,支持IE、Firefox、Safari、Chrome、Opera
2009/08/28 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
chrome下img加载对height()的影响示例探讨
2014/05/26 Javascript
javascript 控制input只允许输入的各种指定内容
2014/06/19 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
easyui-datagrid特殊字符不能显示的处理方法
2017/04/12 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
js+canvas绘制图形验证码
2020/09/21 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
python使用append合并两个数组的方法
2015/04/28 Python
Python的Bottle框架中实现最基本的get和post的方法的教程
2015/04/30 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
Python给图像添加噪声具体操作
2019/03/03 Python
Pycharm配置PyQt5环境的教程
2020/04/02 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
迪卡侬英国官网:Decathlon英国
2017/04/08 全球购物
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
美国最大的购物网站:Amazon.com(亚马逊美国)
2020/05/23 全球购物
创业计划书六个要素
2013/12/26 职场文书
职称评定自我鉴定
2014/03/18 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
机关搬迁方案
2014/05/18 职场文书
教室标语大全
2014/06/21 职场文书
2015年技术工作总结范文
2015/04/20 职场文书