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上的memcache和memcached两个pecl库
Mar 29 PHP
zend api扩展的php对象的autoload工具
Apr 18 PHP
PHP实现读取一个1G的文件大小
Aug 24 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
Zend Guard使用指南及问题处理
Jan 07 PHP
Yii中Model(模型)的创建及使用方法
Dec 28 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
Discuz论坛密码与密保加密规则
Dec 19 PHP
PHP实现文字写入图片功能
Feb 18 PHP
php转换上传word文件为PDF的方法【基于COM组件】
Jun 10 PHP
Laravel第三方包报class not found的解决方法
Oct 13 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 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
NO3第三帝国留言簿制作过程
2006/10/09 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
window.js 主要包含了页面的一些操作
2009/12/23 Javascript
TreeView 用法(有代码)(asp.net)
2011/07/15 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
详解jQuery简单的表单应用
2016/12/16 Javascript
axios基本入门用法教程
2017/03/25 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
微信小程序实现签到弹窗动画
2020/09/21 Javascript
Python三级目录展示的实现方法
2016/09/28 Python
利用python3随机生成中文字符的实现方法
2017/11/24 Python
TensorFlow实现创建分类器
2018/02/06 Python
使用Python做垃圾分类的原理及实例代码附源码
2019/07/02 Python
python增加图像对比度的方法
2019/07/12 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
Python错误的处理方法
2020/06/23 Python
python 怎样进行内存管理
2020/11/10 Python
python在地图上画比例的实例详解
2020/11/13 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
数学专业毕业生自荐信
2013/11/10 职场文书
24岁生日感言
2014/01/13 职场文书
捐书寄语赠言
2014/01/18 职场文书
董事长秘书职责
2014/01/31 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
个人自荐书范文
2015/03/09 职场文书
卢旺达饭店观后感
2015/06/05 职场文书
强烈推荐:小学生:暑假作息时间表(值得收藏)
2019/07/09 职场文书