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 相关文章推荐
一个ubbcode的函数,速度很快.
Oct 09 PHP
让你的PHP同时支持GIF、png、JPEG
Oct 09 PHP
在IIS上安装PHP4.0正式版
Oct 09 PHP
谈谈PHP的输入输出流
Feb 14 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
PHP读取文件内容后清空文件示例代码
Mar 18 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
Jun 13 PHP
php简单实现sql防注入的方法
Apr 22 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
php版微信公众号自定义分享内容实现方法
Sep 22 PHP
php使用json-schema模块实现json校验示例
Sep 28 PHP
PHP+MySQL实现在线测试答题实例
Jan 02 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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
利用PHP自动生成印有用户信息的名片
2016/08/01 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
解决Yii2邮件发送结果返回成功,但接收不到邮件的问题
2017/05/23 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
javascript function、指针及内置对象
2009/02/19 Javascript
IE下Ajax缓存问题的快速解决方法(get方式)
2014/01/09 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
vue实现两个组件之间数据共享和修改操作
2020/11/12 Javascript
[53:10]Secret vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
简单介绍Python中的RSS处理
2015/04/13 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
Python 3实战爬虫之爬取京东图书的图片详解
2017/10/09 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
python解释器spython使用及原理解析
2019/08/24 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
如何执行一个shell程序
2012/11/23 面试题
学前班语言教学计划
2015/01/20 职场文书
创先争优个人总结
2015/03/04 职场文书
党支部半年考察意见
2015/06/01 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
Django rest framework如何自定义用户表
2021/06/09 Python