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制作静态网站的模板框架
Oct 09 PHP
封装一个PDO数据库操作类代码
Sep 09 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
Jan 06 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
调试PHP程序的多种方法介绍
Nov 06 PHP
详解PHP的Yii框架的运行机制及其路由功能
Mar 17 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
PHP不使用内置函数实现字符串转整型的方法示例
Jul 03 PHP
Laravel实现定时任务的示例代码
Aug 10 PHP
php ajax数据传输和响应方法
Aug 21 PHP
thinkphp5使html5实现动态跳转的例子
Oct 16 PHP
PHP实现考试倒计时功能代码
Apr 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
如何设置mysql允许外网访问
2013/06/04 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP正则表达式之捕获组与非捕获组
2015/11/06 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
超清晰的document对象详解
2007/02/27 Javascript
ECMAScript 基础知识
2007/06/29 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
无缝滚动js代码通俗易懂(自写)
2013/06/19 Javascript
利用javascript判断文件是否存在
2013/12/31 Javascript
自己实现ajax封装示例分享
2014/04/01 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
举例讲解jQuery对DOM元素的向上遍历、向下遍历和水平遍历
2016/07/07 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
smartupload实现文件上传时获取表单数据(推荐)
2016/12/12 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
[04:00]DOTA2解说界神雕侠侣 CJ第四天谷子现场过生日
2013/07/30 DOTA
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
[01:32]2016国际邀请赛中国区预选赛IG战队首日赛后采访
2016/06/27 DOTA
Python调用命令行进度条的方法
2015/05/05 Python
python调用staf自动化框架的方法
2018/12/26 Python
Python定义函数功能与用法实例详解
2019/04/08 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
linux系统都有哪些运行级别
2012/04/15 面试题
大学四年的个人自我评价
2014/01/14 职场文书
2014年保育员工作总结
2014/12/02 职场文书
房屋所有权证明
2015/06/19 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书