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 mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
discuz7 phpMysql操作类
Jun 21 PHP
php addslashes和mysql_real_escape_string
Jan 24 PHP
php获取远程图片的两种 CURL方式和sockets方式获取远程图片
Nov 07 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 PHP
一些需要禁用的PHP危险函数(disable_functions)
Feb 23 PHP
深入PHP与浏览器缓存的分析
Jun 03 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
PHP中使用glob函数实现一句话删除某个目录下的所有文件
Jul 22 PHP
php生成html文件方法总结
Dec 01 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
php7新特性的理解和比较总结
Apr 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和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
PHP之短标签开启设置
2013/06/17 PHP
php实现字符串翻转的方法
2015/03/27 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
php实现简单四则运算器
2020/11/29 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
JavaScript高级程序设计(第3版)学习笔记11 内建js对象
2012/10/11 Javascript
javascript手工制作悬浮菜单
2015/02/12 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
JavaScript实现随机五位数验证码
2019/09/27 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
[03:39]这就是刀塔,我们是冠军!燃情短片讲述我们的DOTA故事
2019/07/02 DOTA
深入理解NumPy简明教程---数组3(组合)
2016/12/17 Python
python 构造三维全零数组的方法
2018/11/12 Python
Django如何自定义model创建数据库索引的顺序
2019/06/20 Python
django框架基于queryset和双下划线的跨表查询操作详解
2019/12/11 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
python制作微博图片爬取工具
2021/01/16 Python
html5超简单的localStorage实现记住密码的功能实现
2017/09/07 HTML / CSS
英国最红的高街时尚品牌:Topshop
2016/08/05 全球购物
美国用餐电影院:Alamo Drafthouse Cinema
2020/01/23 全球购物
优秀大学生职业生涯规划书
2014/02/27 职场文书
销售顾问工作计划书
2014/09/15 职场文书
安全月宣传标语
2014/10/07 职场文书
租房协议书范例
2014/10/14 职场文书
欢迎词怎么写
2015/01/23 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
Python基础详解之描述符
2021/04/28 Python
写好Python代码的几条重要技巧
2021/05/21 Python
idea下配置tomcat避坑详解
2022/04/12 Servers
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python