5

我注意到这是对 PHP 5.4 中添加的 PHP 的改进。

我也知道这使用了 SESSION 状态,为了让它显示出来,你需要某种 Javscript 来更新 HTML。我相信javascript是通过按下提交按钮触发的。并且可以设置间隔计时器来检查进度。

我想做的就是让进度更新 div 的 HTML。(例如 25%...35%)

到目前为止我的理解:
-您需要一个具有隐藏值的表单
-这会根据该名称创建一个包含信息的会话变量
-您需要观察进度以获得其状态

选项
- 方法 1:使用您可以在网上找到的预建的。很少/没有解释它。
- 方法2:将文件发送到另一个php文件并使用JSinterval检查其进度。
- 方法3:有没有办法在同一页面上完成所有操作?

4

1 回答 1

0
<div id="progress"></div>
<form action="/upload.php" method="POST" enctype="multipart/form-data" id="upload">
 <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="upload" />

 <input type="file" name="file" id="file" />
 <input type="submit" value="Upload" onclick="upload()"/>
</form>

    <script>
      //Check Sumbit has been clicked; either onclick or event handler
      //Setup an interval timer updating the 'PROGRESS' div each check
      //Each Interval: Get SESSION VARIABLE status and Update the div 'PROGRESS'
      //Once file has completed; Do we redirect or submit the form?

    function upload()
    {
    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("progress").innerHTML=setInterval(function(){xmlhttp.responseText},500);
        }
      }
    xmlhttp.open("POST","upload_progress.php",true);
    xmlhttp.send();

    }

</script>
于 2013-03-07T15:11:42.860 回答