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 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
Jun 25 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
PHP使用Pear发送邮件(Windows环境)
Jan 05 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
golang与php实现计算两个经纬度之间距离的方法
Jul 22 PHP
POST一个JSON格式的数据给Restful服务实例详解
Apr 07 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
解析curl提交GET,POST,Cookie的简单方法
2013/06/29 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
php简单生成一组与多组随机字符串的方法
2017/05/09 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
YII2框架使用控制台命令的方法分析
2020/03/18 PHP
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
基于javascript数组实现图片轮播
2016/05/02 Javascript
JavaScript实现使用Canvas绘制图形的基本教程
2016/10/27 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
JavaScript运动框架 链式运动到完美运动(五)
2017/05/18 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
详解React Native 屏幕适配(炒鸡简单的方法)
2018/06/11 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
JavaScript实现商品评价五星好评
2020/11/30 Javascript
浅谈Python中的私有变量
2018/02/28 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python matplotlib实现双Y轴的实例
2019/02/12 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
美国在线购买和出售礼品卡网站:EJ Gift Cards
2019/06/09 全球购物
abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗?
2012/10/15 面试题
知识竞赛主持词
2014/03/26 职场文书
宣传普通话标语
2014/06/27 职场文书
县人大领导班子四风对照检查材料思想汇报
2014/10/09 职场文书
房产公证书
2015/01/23 职场文书
安全保证书格式
2015/02/28 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
团支部书记竞选稿
2015/11/21 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python