5分钟让你学会PHP语言文件上传进度条的具体实现方式
小标 2018-07-12 来源 : 阅读 1433 评论 0

摘要:本文主要向大家介绍了PHP语言文件上传进度条的具体实现方式,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

本文主要向大家介绍了PHP语言文件上传进度条的具体实现方式,通过具体的实例向大家展示,希望对大家学习php语言有所帮助。

我们在编写文件上传代码的时候,还需要考虑一个重要的实现功能,那就是文件上传所需要的进度条

目前我知道php文件上传进度条的方法有两种,一种是使用PHP的创始人 Rasmus Lerdorf 写的APC扩展模块来实现,

另外一种方法是使用PECL扩展模块uploadprogress实现。

 

我这里举两个分别实现的例子供参考,更灵活的应用根据自己需要来修改。

 

APC的PHP文件上传进度条实现方法:

 

安装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文件上传进度条实现方法

 

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频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程