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 提速工具eAccelerator 配置参数详解
May 16 PHP
PHP中simplexml_load_string函数使用说明
Jan 01 PHP
php学习之数据类型之间的转换介绍
Jun 09 PHP
php设计模式 Interpreter(解释器模式)
Jun 26 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
php读取纯真ip数据库使用示例
Jan 26 PHP
PHP依赖倒置(Dependency Injection)代码实例
Oct 11 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
php利用header函数下载各种文件
Aug 24 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
PHP依赖注入原理与用法分析
Aug 21 PHP
php 使用 __call实现重载功能示例
Nov 18 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中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
PHP设计模式之代理模式的深入解析
2013/06/13 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
php递归函数中使用return的注意事项
2014/01/17 PHP
smarty获得当前url的方法分享
2014/02/14 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
PHP实现简单的计算器
2020/08/28 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
Bootstrap 最常用的JS插件系列总结(图片轮播、标签切换等)
2016/07/14 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
JavaScript原型对象原理与应用分析
2018/12/27 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
[51:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第二局
2016/03/03 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
pycharm 使用心得(二)设置字体大小
2014/06/05 Python
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
python3简单实现微信爬虫
2015/04/09 Python
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
详解scrapy内置中间件的顺序
2020/09/28 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
党员评议表自我评价范文
2014/10/20 职场文书
家装电话营销开场白
2015/05/29 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python