PHP 文件上传进度条的两种实现方法的代码
PHP 文件上传进度条的两种实现方法的代码
发布时间:2016-12-29 来源:查字典编辑
摘要:目前我知道的方法有两种,一种是使用PHP的创始人RasmusLerdorf写的APC扩展模块来实现(http://pecl.php.net/...

目前我知道的方法有两种,一种是使用PHP的创始人RasmusLerdorf写的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;

echojson_encode($status);//输出给用户端页面里的ajax调用,相关文档请自己寻找

exit;

}elseif(isset($_GET['progress_key'])){//读取上传进度

$status=apc_fetch('upload_'.$_GET['progress_key']);

echojson_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,26Jul199705:00:00GMT");

header("Last-Modified:".gmdate("D,dMYH: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)){

echojson_encode($uploadvalues);

}else{

//读取进度失败,另外处理逻辑

}

}else{

//显示上传表单

}

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新php教程学习
热门php教程学习
编程开发子分类