会话上传进度&多个文件

时间:2014-04-13 21:10:58

标签: php

我在这里使用这个功能:

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变量。如何处理上传的每个文件的进度?

1 个答案:

答案 0 :(得分:1)

除非您上传单个文件,否则不能这样做。 $_SESSION[$key]['content_length']是正在上传的文件的总内容长度,以及可用内容长度的唯一指示。因此,您有两个选择:显示所有文件的全局进度或将上载文件的数量限制为1.

(不确定你是不是,但是如果你愿意放弃这种方法,你可以选择其中一个上传管理器。过去我已经满意Fine Uploader了。)