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 相关文章推荐
在PHP中PDO解决中文乱码问题的一些补充
Sep 06 PHP
php curl 伪造IP来源的实例代码
Nov 01 PHP
基于php下载文件的详解
Jun 02 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
Jan 30 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
php使用文本统计访问量的方法
May 12 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
php中引用&的用法分析【变量引用,函数引用,对象引用】
Dec 12 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
Jan 11 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
PHP 面向对象程序设计之类属性与类常量实现方法分析
Apr 13 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
PHP中上传大体积文件时需要的设置
2006/10/09 PHP
php set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
PHP 中关于ord($str)>0x80的详细说明
2012/09/23 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
Javascript 自定义类型方法小结
2010/03/02 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
jQuery+jsp实现省市县三级联动效果(附源码)
2015/12/03 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
vue路由插件之vue-route
2019/06/13 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
JS call()及apply()方法使用实例汇总
2020/07/11 Javascript
Element Input输入框的使用方法
2020/07/26 Javascript
jQuery实现本地存储
2020/12/22 jQuery
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
python 合并文件的具体实例
2013/08/08 Python
python利用matplotlib库绘制饼图的方法示例
2016/12/18 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python2与python3的print及字符串格式化小结
2018/11/30 Python
Django中Middleware中的函数详解
2019/07/18 Python
pytorch:torch.mm()和torch.matmul()的使用
2019/12/27 Python
使用keras实现BiLSTM+CNN+CRF文字标记NER
2020/06/29 Python
CSS3简单实现照片墙
2014/12/12 HTML / CSS
法律专业应届生自荐信范文
2014/01/06 职场文书
如何写好建议书
2014/03/13 职场文书
减负增效提质方案
2014/05/23 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
医院党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
银行稽核岗位职责
2015/04/13 职场文书
2016猴年春节问候语
2015/11/11 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
Spring实现内置监听器
2021/07/09 Java/Android