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语法(3)
Oct 09 PHP
PHP中的float类型使用说明
Jul 27 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
深入解析PHP中foreach语句控制数组循环的用法
Nov 30 PHP
基于php判断客户端类型
Oct 14 PHP
PHP自定义多进制的方法
Nov 03 PHP
CI框架表单验证实例详解
Nov 21 PHP
PHP错误处理函数register_shutdown_function使用示例
Jul 03 PHP
PHP多个图片压缩成ZIP的方法
Aug 18 PHP
CI框架附属类用法分析
Dec 26 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
Apr 12 PHP
yii2的restful api路由实例详解
May 14 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 函数语法介绍一
2009/06/14 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
基于php常用正则表达式的整理汇总
2013/06/08 PHP
destoon常用的安全设置概述
2014/06/21 PHP
PHP中array_map与array_column之间的关系分析
2014/08/19 PHP
PHP中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
TNC vs BOOM BO3 第一场2.13
2021/03/10 DOTA
【消息提示组件】,兼容IE6/7&&FF2
2007/09/04 Javascript
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
JQuery的AJAX实现文件下载的小例子
2013/05/15 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
bootstrapValidator 重新启用提交按钮的方法
2017/02/20 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
简单学习Python多进程Multiprocessing
2017/08/29 Python
Python 12306抢火车票脚本
2018/02/07 Python
Python小白必备的8个最常用的内置函数(推荐)
2019/04/03 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Python项目打包成二进制的方法
2020/12/30 Python
Python try except finally资源回收的实现
2021/01/25 Python
Styleonme中文网:韩国高档人气品牌
2017/06/21 全球购物
西班牙英格列斯百货英国官网:El Corte Inglés英国
2017/10/30 全球购物
考核评语大全
2014/04/29 职场文书
文明旅游倡议书
2015/04/28 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang
Python中else的三种使用场景
2021/06/16 Python
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android