我注意到这是PHP的改进,已经在PHP 5.4中添加了。
我也理解这会使用SESSION状态,为了显示它,你需要某种Javscript来更新HTML。我相信按下提交按钮会触发javascript。并且可以设置间隔计时器来检查进度。
我想要做的就是让进度更新div的HTML。 (例如25%...... 35%)
到目前为止我的理解:
- 您需要一个隐藏价值的表格
- 这将从该名称创建一个SESSION VARIABLE,其中包含信息
- 您需要观察进度才能获得其状态
选项
- 方法1:使用您可以在线找到的预建的。很少/没有解释它。
- 方法2:将文件发送到另一个php文件并使用JSinterval检查其进度
- 方法3:有没有办法在同一页面上完成所有操作?
答案 0 :(得分: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>