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 相关文章推荐
写一个用户在线显示的程序
Oct 09 PHP
php 魔术方法使用说明
Oct 20 PHP
PHP自定义函数收代码
Aug 01 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
php专用数组排序类ArraySortUtil用法实例
Apr 03 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
Oct 22 PHP
Mac系统下搭建Nginx+php-fpm实例讲解
Dec 15 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
php URL验证正则表达式
2011/07/19 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
javascript中定义私有方法说明(private method)
2014/01/27 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
纯css下拉菜单 无需js
2016/08/15 Javascript
深入浅析javascript继承体系
2017/10/23 Javascript
vue2.0实现的tab标签切换效果(内容可自定义)示例
2019/02/11 Javascript
ES6中Symbol、Set和Map用法详解
2019/08/20 Javascript
JS合并两个数组的3种方法详解
2019/10/24 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
Python脚本实现集群检测和管理功能
2015/03/06 Python
python对数组进行反转的方法
2015/05/20 Python
Python实现删除当前目录下除当前脚本以外的文件和文件夹实例
2015/07/27 Python
Python实现字典的key和values的交换
2015/08/04 Python
python实现二维码扫码自动登录淘宝
2016/12/27 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
python 调用有道api接口的方法
2019/01/03 Python
matplotlib.pyplot.matshow 矩阵可视化实例
2020/06/16 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
我的动漫时代的创业计划书范文
2014/01/27 职场文书
旅游活动总结
2014/08/27 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python
Redis实现分布式锁的五种方法详解
2022/06/14 Redis