2011-01-26 65 views
1

發佈更新:評論者建議後。PHP APC進度條

的index.php

<?php 
$id = uniqid(""); 
?> 
</head> 

<body> 
<form method="post" action="frame.php" target="upload_iframe" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="progress_key" value="<?php echo $id; ?>"/> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 
<iframe name="upload_iframe" style="width: 400px; height: 100px;"> 
</iframe> 

frame.php

<?php 
if(isset($_POST['progress_key'])) { 
    echo "hey1"; 
    $status = apc_fetch('upload_'.$_POST['progress_key']); 
    echo $status['current']/$status['total']*100; 
} 
echo "hey2"; 
?> 

仍然不工作:(,我不甚至可以在後幀格式的數據。我要去哪裏錯了?

Regards。

+0

「apc.rfc1867_prefix」和「apc.rfc1867_name」的php.ini值是什麼?隱藏字段中`name`屬性的值應該對應於`apc.rfc1867_name`,而`apc_fetch`調用的前綴應該對應`apc.rfc1867_prefix`。 – 2011-01-26 20:44:56

+0

爲毫安,我已經從喜好選擇APC,並在conf>目錄PHP5>的php.ini更新: apc.rfc1867 =上 apc.max_file_size = 200M 的upload_max_filesize = 200M 的post_max_size = 200M – 2011-01-27 13:09:46

回答

0

無論何時使用APC文件上傳機制,您都需要添加一個附加參數您的表單可識別正在上傳的文件,並且是您的apc_fetch的關鍵。

<?php $id = uniqid(time()); ?>
<input type="hidden" name="APC_UPLOAD_PROGRESS" id="myUniProgressKey" value="<?php echo $id; ?>"/>

當文件上傳的關鍵upload . $id值將包含你需要顯示進度條的信息。最簡單的方法是使用調用您的服務器,調用服務器,使用apc_fetch。這意味着您的上傳頁面不需要刷新用戶所在的當前頁面。過去,我使用iframe,它啓動了間隔輪詢服務器。上傳完成後,您可以在同一個iframe中顯示完整的信息。