国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP+apc+ajax實現(xiàn)的ajax_upload上傳進度條代碼

2024-05-04 23:42:32
字體:
來源:轉載
供稿:網(wǎng)友
這篇文章主要介紹了PHP+apc+ajax實現(xiàn)的ajax_upload上傳進度條代碼,詳細分析了apc模塊的安裝、設置及ajax調用實現(xiàn)上傳進度條功能,需要的朋友可以參考下
 

本文實例講述了PHP+apc+ajax實現(xiàn)的ajax_upload上傳進度條代碼。分享給大家供大家參考,具體如下:

上傳進度條是怎么實現(xiàn)的呢?原理是怎么樣的呢?當我們?yōu)g覽,選擇上傳后,會產(chǎn)生一個臨時文件,上傳的時把這個臨時文件,上傳到服務器,上傳完成后,這個臨時文件會被刪除掉。如果我們能讀取這個臨時文件的大小,就知道上傳進度是多少了,php apc模塊可以實現(xiàn)這個功能。

一、安裝apc模塊

下載地址:http://pecl.php.net/package/apc

tar zxvf APC-3.1.8.tgzcd APC-3.1.8//usr/local/php/bin/phpize./configure --with-php-config=/usr/local/php/bin/php-configmake && make install

二、修改php.ini

extension = apc.soapc.rfc1867 = 1apc.max_file_size = 200Mupload_max_filesize = 1000Mpost_max_size = 1000Mmax_execution_time = 600max_input_time = 600memory_limit = 128M

修改好后,重起apache或者其他,查看一下

[root@BlackGhost php]# php -m[PHP Modules]apccgi-fcgictypecurldatedomeAccelerator。。。。。。。。

三、upload_test.php

<?php$id = uniqid(rand(), true);?><html><script type='text/javascript' src='jquery-1.3.2.js'></script><script type='text/javascript' src='ajaxupload.3.1.js'></script><script type='text/javascript' src='upload.js'></script><body style="text-align:center;"><h1>上傳測試</h1><form enctype="multipart/form-data" id="upload" method="POST"><input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?=$id?>" /><input type="file" id="file" name="file" value=""/><br/><input id="submit" type="submit" value="Upload!" /></form><div id="progressouter" style="width: 500px; height: 20px; border: 1px solid black; display:none;"><div id="progressinner" style="position: relative; height: 20px; background-color: red; width: 0%; "></div></div><br /><div id='showNum'></div><br><div id='showInfo'></div><br></body></html><script type="text/javascript">$(document).ready(function(){form_submit();});</script>

APC_UPLOAD_PROGRESS這個有什么用呢?它對上傳的文件添加一個標記,就可以在其它的php程序中用這個標記訪問它。為apc的讀取提供支持。

upload.js異步上傳的js文件:

function form_submit (){new AjaxUpload('#upload', {action: 'upload.php',name: 'file',data: {APC_UPLOAD_PROGRESS:$("#progress_key").val()},autoSubmit: true,onSubmit: function(file, extension){$('#progressouter').css('display', 'block');progress();},onComplete: function(file, response){$("#showInfo").html(response);}});}function progress (){$.ajax({type: "GET",url: "progress.php?progress_key="+$("#progress_key").val(),dataType: "json",cache:false,success: function(data){if(data == 0) {var precent = 0;} else {for (i in data) {if (i == "current") {var json_current = parseInt(data[i]);}if (i == "total") {var json_total = parseInt(data[i]);}}var precent = parseInt(json_current/json_total * 100);$("#progressinner").css("width",precent+"%");$("#showNum").html(precent+"%");$("#showInfo").html("ok");}if ( precent < 100) {setTimeout("progress()", 100);}}});}

上面有一點要注意,APC_UPLOAD_PROGRESS:$("#progress_key").val()在這里,key是APC_UPLOAD_PROGRESS如果不是這個的話,apc找不到臨時文件的。在這里我為什么要用ajax_upload.js呢,因為jquery自帶的ajax,自帶參數(shù)沒有上傳文件的,也就是type='file'中的內容,php端根本得不到。

四、upload.php上傳文件

<?phpif($_SERVER['REQUEST_METHOD'] == 'POST') {if(empty($_FILES["file"]["tmp_name"])){echo "no file";die;}$tmp_name = $_FILES["file"]["tmp_name"];$name = dirname($_SERVER['SCRIPT_FILENAME'])."/upload/".$_FILES["file"]["name"];move_uploaded_file($tmp_name, $name);echo "<p>File uploaded.</p>";}?>

如果文件比較大,就不要用http的方式來上傳了,太慢,并且影響網(wǎng)站的穩(wěn)定性。

五、progress.php取得進度的文件,給ajax調用用的

<?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 異步請求產(chǎn)生的數(shù)據(jù)。

PHP+apc+ajax實現(xiàn)的ajax_upload上傳進度條代碼

php apc ajax 上傳進度條

參數(shù)說明:

total           文件大小
current       已上傳的大小
filename     上傳文件名
name          標簽名
done          上傳成功為1
cancel_upload      用戶取消上傳,只有上傳完成時才有
rate 上傳速度,只有上傳完成時才有
start_time   開始時間

希望本文所述對大家PHP程序設計有所幫助。



注:相關教程知識閱讀請移步到PHP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 射洪县| 霍山县| 沅陵县| 鄂温| 尉氏县| 和田县| 东乡族自治县| 巍山| 龙胜| 乌鲁木齐县| 北碚区| 镇安县| 林州市| 进贤县| 五家渠市| 巴东县| 永济市| 隆回县| 玉树县| 望奎县| 类乌齐县| 闵行区| 黄山市| 许昌县| 茌平县| 惠来县| 武夷山市| 胶州市| 河北区| 迁安市| 天门市| 河南省| 贵德县| 建平县| 麻栗坡县| 临安市| 封丘县| 宿迁市| 绥芬河市| 合肥市| 洪泽县|