本文实例讲述了PHP apc ajax实现的ajax _上传上传进度条代码。分享给大家供大家参考,具体如下:
上传进度条是怎么实现的呢?原理是怎么样的呢?当我们浏览,选择上传后,会产生一个临时文件,上传的时把这个临时文件,上传到服务器,上传完成后,这个临时文件会被删除掉。如果我们能读取这个临时文件的大小,就知道上传进度是多少了,php apc模块可以实现这个功能。
一、安装美国动力会议模块
下载地址:http://pecl.php.net/package/apc
tar zxvf APC-3。1 .8 .tgzcd APC-3。1 .8//usr/local/PHP/bin/phpize ./config-with-PHP-config=/usr/local/PHP/bin/PHP-config-make安装二、修改php.ini
扩展名=APC。肥皂交流。RFC 1867=1 APAC。max _ file _ size=200 moupload _ max _ file size=1000 post _ max _ size=1000 max _ execution _ time=600 max _ input _ time=600 memory _ limit=128m修改好后,重起街头流氓或者其他,查看一下
[[电子邮件保护]PHP]# PHP-m[PHP Modules]apccgi-fcgictypirdatedomeaccelerator。三、上传_test.php
?php$id=uniqid(rand(),true);html脚本类型=' text/JavaScript ' src=' jquery-1。3 .2 .js '/script脚本类型=' text/JAVAScript ' src=' ajaxupload。3 .1 .js '/script脚本类型=' text/JavaScript ' src=' upload。js '/脚本正文样式=' text-align 3360 center'氕上传测试/h1表单enctype=' multipart/form-data ' id=' UPLOAD '方法='POST '输入类型='隐藏'名称=' APC _ UPLOAD _ PROGRESS ' id=' PROGRESS _ key '值='?=$id?/input type=' file ' id=' file ' name=' file ' value=' '/br/input id=' submit ' type=' submit ' value=' Upload!//formdiv id=' progress outer ' style=' width : 500 px;高: 20pxborder: 1px纯黑;display : none div id=' progressiner ' style=' position : relative;高度: 20像素背景-颜色:红色;宽度: 0%;/div/div br/div id=' ShowNum '/div brdiv id=' ShowInfo '/div br/body/html脚本类型=' text/JavaScript ' $(文档)。ready(function(){ form _ submit();});/scriptAPC_UPLOAD_PROGRESS这个有什么用呢?它对上传的文件添加一个标记,就可以在其它的服务器端编程语言(专业超文本预处理器的缩写)程序中用这个标记访问它。为美国动力会议的读取提供支持。
上传。射流研究…异步上传的射流研究…文件:
函数form _ submit(){ new AJaxPload(' # UPLOAD ',{action: 'upload.php ',name: 'file ',data : { APC _ UPLOAD _ PROGRESS : $(' # PROGRESS _ key ').val()},autoSubmit: true,onSubmit:函数(文件,扩展名){$('#progressouter ').css('display ',' block ');progress();},完整版:函数(文件,响应){$('#showInfo ').html(响应);}});}函数进度(){$。ajax({type: 'GET ',url: 'progress.php?progress_key=' $('#progress_key ').val(),dataType: 'json ',cache:false,success:函数(数据){if(数据==0){ var prent=0;} else { for(I in data){ if(I==' current '){ var JSON _ current=parsent(data[I]);} if(I==' total '){ var JSON _ total=parsent(data[I]);} } var prent=ParSeint(JSON _ current/JSON _ total * 100);$(' # progressor ').css('width ',prent ' % ');$('#showNum ').html(前"%");$('#showInfo ').html(' ok ');} if(prent 100){ setTimeout(' progress()',100);}}});}上面有一点要注意,APC _ UPLOAD _ PROGRESS : $(' # PROGRESS _ key ').val()在这里,键是APC_UPLOAD_PROGRESS如果不是这个的话装甲运兵车找不到临时文件的。在这里我为什么要用ajax_upload.js呢,因为jquery自带的ajax,自带参数没有上传文件的,也就是类型="文件"中的内容,php端根本得不到。
四、upload.php上传文件
?phpif($ _ SERVER[' REQUEST _ METHoD ']==' POST '){ if(空($ _ FILES[' FIle '][' tmp _ name ']){ echo ' no FIle ';死去;} $ tmp _ name=$ _ FILES[' file '][' tmp _ name '];$ name=dir name($ _ SERVER[' SCRIPT _ FILENAME '])./上传/' .$ _ FIles[' FIle '][' name '];move_uploaded_file($tmp_name,$ name);上传了“回声”pFile ./p ';}?如果文件比较大,就不要用超文本传送协议(超文本传输协议的缩写)的方式来上传了,太慢,并且影响网站的稳定性。
五、progress.php取得进度的文件,给创建交互式、快速动态网页应用的网页开发技术调用用的
?phpif(isset($ _ GET[' progress _ key ']){ $ status=APC _ fetch(' upload _ ')。$ _ GET[' progress _ key ']);if($status['total']!=0 !empty($ status[' total ']){ echo JSON _ encode($ status);} else { echo 0;}}?看看ajax异步请求生成的数据。
php apc ajax的上传进度条。
参数:
总文件大小当前上载大小文件名上载文件名标记名称已成功上载为1cancel_upload。用户取消上传,只有上传完成才能达到速率上传速度,只有上传完成才能达到start_time开始时间。
更多对PHP文件和ajax操作感兴趣的读者,请查看本网站专题:《php文件操作总结》和《PHP+ajax技巧与应用小结》。
希望本文对PHP编程有所帮助。