我在这里使用这个功能:
http://www.php.net/manual/en/session.upload-progress.php
以下是我上传进度的代码:
<?
session_start();
$key = ini_get("session.upload_progress.prefix") . "myForm";
if(!empty($_SESSION[$key])) {
echo "<table width='400' style='font-family: Verdana; font-size: 12px;'>";
foreach($_SESSION[$key]['files'] as $f)
{
// Get percentage done
$current = $f["bytes_processed"];
$total = $f["content_length"];
if($current < $total) {
$done = ceil($current / $total * 100);
} else {
$done = 100;
}
echo " <tr>
<td colspan=2>{$f['name']}</td>
</tr>
<tr>
<td colspan=2><img src='uploading.gif' width='{$done}px' height='13px'></td>
</tr>
<tr>
<td>Started @ ".date("H:m:s",$f['start_time'])."</td>
<td>{$done}%</td>
</tr>";
}
echo "</table>";
}
?>
问题是单个文件没有content_length
变量。如何处理上传的每个文件的进度?
答案 0 :(得分:1)
除非您上传单个文件,否则不能这样做。 $_SESSION[$key]['content_length']
是正在上传的文件的总内容长度,以及可用内容长度的唯一指示。因此,您有两个选择:显示所有文件的全局进度或将上载文件的数量限制为1.
(不确定你是不是,但是如果你愿意放弃这种方法,你可以选择其中一个上传管理器。过去我已经满意Fine Uploader了。)