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 相关文章推荐
程序员编程十条戒律
Jul 09 PHP
PHP 数组基础知识小结
Aug 20 PHP
重新封装zend_soap实现http连接安全认证的php代码
Jan 12 PHP
php将fileterms函数返回的结果变成可读的形式
Apr 21 PHP
PHP编程风格规范分享
Jan 15 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
ThinkPHP路由详解
Jul 27 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
php实现简单的上传进度条
Nov 17 PHP
php+webSoket实现聊天室示例代码(附源码)
Feb 17 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
thinkphp5使html5实现动态跳转的例子
Oct 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
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
2013/11/14 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
laravel 5.5 关闭token的3种实现方式
2019/10/24 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
用户注册常用javascript代码
2009/08/29 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
JavaScript实现文字跟随鼠标特效
2015/08/06 Javascript
jQuery+HTML5加入购物车代码分享
2020/10/29 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
Highcharts入门之简介
2016/08/02 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
在Python中使用异步Socket编程性能测试
2014/06/25 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python常用数据重复项处理方法
2019/11/22 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
纽约服装和生活方式品牌:Saturdays NYC
2017/08/13 全球购物
企业内控岗位的职责
2014/02/07 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
党组织结对共建协议书
2016/03/23 职场文书
检讨书之工作不认真
2019/08/14 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
详解在OpenCV中如何使用图像像素
2022/03/03 Python
《勇者辞职不干了》ED主题曲无字幕动画MV公开
2022/04/13 日漫