PHP进度条不起作用

时间:2013-05-30 08:31:42

标签: php jquery file-upload

html和java脚本文件都在同一页面上

与之对应的HTML代码是:

<body>
    <div id="outer_pog">
        <div id="inner_pog">
        </div>
    </div>
    <form action="index.php" method="post" id="myform" enctype="multipart/form-data" target="hidden_frame">
        <input type="hidden" value="myform" name="<?php echo ini_get("session.upload_progress.name");  ?>" />
        <input type="file" name="userfile" />   <br/>
        <input type="submit" value="start upload" />

    </form>
    <iframe name="hidden_frame" style="display: none;"></iframe>
    <span></span>
</body>

javascript代码是:

$(function(){
        $('#myform').submit(function(e){      
          $.get('progress.php',function(dt){
             $('span').html(dt);
             setTimeout(prog,1000);
          });
        })
     });
     function prog(){
         $.get('progress.php',function(dt){
             $('span').html(dt);
             if(dt<100)
             {
                 setTimeout(prog,1000);
             }
          });
     }

当我运行这个时,我总是得到100回报,当我在netbean值中调试它时 $ _SESSION [$ key]总是数组[0]。

php代码,即progress.php,如下:

<?php
session_start();
$key=  ini_get("session.upload_progress.prefix")."myform";
if(!empty($_SESSION[$key])){
 $cur=$_SESSION[$key]['bytes_processed'];
 $tot=$_SESSION[$key]['content_length'];
 echo $cur<$tot ? ceil($cur/$tot*100) : 100;
 }
else
echo 100;
?>

2 个答案:

答案 0 :(得分:0)

$('#myform').submit(function(e){
e.preventDefault();
...

答案 1 :(得分:0)

$ key变量的值是多少?有没有?
如果检查源代码是否有隐藏输入的名称?

php.net中的最高评论指出:“注意,当您的网络服务器通过FastCGI运行PHP时,此功能不起作用。会话数组中没有进展信息。 不幸的是,PHP只在上传完成后才获取数据,并且无法显示任何进展。“

因此,请检查您的网络服务器设置。

但是,我建议你使用jQuery的uploadify插件。