PHP 文件上传进度条的两种实现方法的代码


Posted in PHP onNovember 25, 2007

目前我知道的方法有两种,一种是使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现(http://pecl.php.net/package/apc),另外一种方法是使用PECL扩展模块 uploadprogress实现(http://pecl.php.net/package/uploadprogress)我这里举两个分别实现的例子供参考,更灵活的应用根据自己需要来修改。

APC实现方法:

安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明
配置php.ini,设置参数 apc.rfc1867=1 ,使APC支持上传进度条功能,在APC源码说明文档里面有说明
代码范例:

if ($_SERVER['REQUEST_METHOD'] == 'POST') {  //上传请求  
    $status = apc_fetch('upload_' . $_POST['APC_UPLOAD_PROGRESS']);  
    $status['done'] = 1;  
    echo json_encode($status);  //输出给用户端页面里的ajax调用,相关文档请自己寻找  
    exit;  
} elseif (isset($_GET['progress_key'])) {   //读取上传进度  
    $status = apc_fetch('upload_'.$_GET['progress_key']);  
    echo json_encode($status);  
    exit;  
} else {  
    //其他代码,比如上传表单等  
} 

uploadprogress 模块实现方法:

使用PECL模块安装方法安装该模块
php.ini里面设置 uploadprogress.file.filename_template = “/tmp/upd_%s.txt”
代码范例:

if($_SERVER['REQUEST_METHOD']=='POST') {  
    if (is_uploaded_file($_FILES['upfile']['tmp_name'])) {  
        $upload_dir = 'your_path/';  
        $ext        = strrchr($_FILES['video']['name'], '.');  
        $sessid     = $_POST['UPLOAD_IDENTIFIER'] ;  
        $tmpfile    = $upload_dir . $sessid;   
        $sessfile   = $upload_dir . $sessid .$ext;  
        if (move_uploaded_file($_FILES['upfile']['tmp_name'],$tmpfile)) {  
            //上传成功  
        } else {  
            //上传失败  
    } else {  
        //上传错误  } elseif (!empty($_GET['sessid'])) {  
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");  
    header("Cache-Control: no-store, no-cache, must-revalidate");  
    header("Cache-Control: post-check=0, pre-check=0", false);  
    header("Pragma: no-cache");  
    header("Content-Type:text/html;charset=UTF-8");  
    $unique_id = $_GET['sessid'];  
    $uploadvalues = uploadprogress_get_info($unique_id);  
    if (is_array($uploadvalues)) {  
        echo json_encode($uploadvalues);  
    } else {  
        //读取进度失败,另外处理逻辑  
    }  
} else {  
    //显示上传表单  
}
PHP 相关文章推荐
mysql 全文搜索 技巧
Apr 27 PHP
删除及到期域名的查看(抢域名必备哦)
May 14 PHP
PHP中使用gettext来支持多语言的方法
May 02 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
php中利用explode函数分割字符串到数组
Feb 08 PHP
zf框架的数据库追踪器使用示例
Mar 13 PHP
ThinkPHP模板引擎之导入资源文件方法详解
Jun 18 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
php中JSON的使用与转换
Jan 14 PHP
php实现将任意进制数转换成10进制的方法
Apr 17 PHP
PHP 代码简洁之道(小结)
Oct 16 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 #PHP
php Mysql日期和时间函数集合
Nov 16 #PHP
PHP编程中字符串处理的5个技巧小结
Nov 13 #PHP
表单复选框向PHP传输数据的代码
Nov 13 #PHP
实用函数10
Nov 08 #PHP
实用函数9
Nov 08 #PHP
实用函数8
Nov 08 #PHP
You might like
晶体管单管来复再生式收音机
2021/03/02 无线电
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
javascript实现uploadify上传格式以及个数限制
2015/11/23 Javascript
JS实现设置ff与ie元素绝对位置的方法
2016/03/08 Javascript
Node.js的Express框架使用上手指南
2016/03/12 Javascript
AngularJS基础 ng-mouseover 指令简单示例
2016/08/02 Javascript
JavaScript中常用的验证reg
2016/10/13 Javascript
javascript中call,apply,bind函数用法示例
2016/12/19 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
小程序实现列表倒计时功能
2021/01/29 Javascript
跟老齐学Python之从if开始语句的征程
2014/09/14 Python
python实现汉诺塔递归算法经典案例
2021/03/01 Python
实例讲解python中的序列化知识点
2018/10/08 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Python日志syslog使用原理详解
2020/02/18 Python
加拿大服装和鞋类零售商:Mark’s
2021/01/04 全球购物
别名指示符是什么
2012/10/08 面试题
介绍一下linux文件系统分配策略
2012/11/17 面试题
离职证明范本(5篇)
2014/09/19 职场文书
社保缴纳证明申请书
2014/11/03 职场文书
集结号观后感
2015/06/08 职场文书
python实现大文本文件分割成多个小文件
2021/04/20 Python
css背景和边框标签实例详解
2021/05/21 HTML / CSS
python 管理系统实现mysql交互的示例代码
2021/12/06 Python