目前我知道的方法有两种,一种是使用PHP的创始人RasmusLerdorf写的APC扩展模块来实现(<A href="http://pecl.php.net/package/apc">http://pecl.php.net/package/apc),另外一种方法是使用PECL扩展模块uploadprogress实现(<A href="http://pecl.php.net/package/uploadprogress">http://pecl.php.net/package/uploadprogress)我这里举两个分别实现的例子供参考,更灵活的应用根据自己需要来修改。 APC实现方法: 安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明 配置php.ini,设置参数apc.rfc1867=1,使APC支持上传进度条功能,在APC源码说明文档里面有说明 代码范例: <div class="codetitle"><a style="CURSOR: pointer" data="69865" class="copybut" id="copybut69865" onclick="doCopy('code69865')"> 代码如下:<div class="codebody" id="code69865"> if($_SERVER['REQUEST_METHOD']=='POST'){//上传请求 $status=apcfetch('upload'.$_POST['APC_UPLOAD_PROGRESS']); $status['done']=1; echojson_encode($status);//输出给用户端页面里的ajax调用,相关文档请自己寻找 exit; }elseif(isset($_GET['progress_key'])){//读取上传进度 $status=apcfetch('upload'.$_GET['progress_key']); echojson_encode($status); exit; }else{ //其他代码,比如上传表单等 }
uploadprogress模块实现方法: 使用PECL模块安装方法安装该模块 php.ini里面设置uploadprogress.file.filenametemplate=“/tmp/upd%s.txt” 代码范例: <div class="codetitle"><a style="CURSOR: pointer" data="61579" class="copybut" id="copybut61579" onclick="doCopy('code61579')"> 代码如下:<div class="codebody" id="code61579"> 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{ //显示上传表单 }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|