2013-03-07 7 views
5

Ich bemerkte, dass dies eine Verbesserung für PHP war, die in PHP 5.4 hinzugefügt wurde.Wie würden Sie in PHP 5.4 eine grundlegende Fortschrittsanzeige für das Hochladen von Dateien implementieren?

Ich verstehe auch, dass dies SESSION-Status verwendet und damit es angezeigt wird, benötigen Sie eine Art von Javscript, um das HTML zu aktualisieren. Ich glaube, das Javascript wird ausgelöst, indem man den Submit Button drückt. Und ein Intervall-Timer kann eingestellt werden, um den Fortschritt zu überprüfen.

Alles, was ich tun möchte, ist der Fortschritt den HTML-Code eines div aktualisieren. (ZB 25% ... 35%)

mein Verständnis so weit:
- Sie müssen ein Formular mit einem versteckten Wert
- Dies erzeugt ein Session-Variable von diesem Namen, der die Informationen in
hat - Sie muss den Fortschritt beobachten, um seinen Status zu erhalten

Optionen
- Methode 1: Verwenden Sie eine vorgefertigte, die Sie online finden können. Wenige/Keine erklären es.
- Methode 2: Senden Sie die Datei an eine andere PHP-Datei und überprüfen Sie mit JSinterval den Fortschritt.
- Methode 3: Gibt es eine Möglichkeit, alles auf der gleichen Seite zu tun?

+0

Ein Dateiupload-Fortschrittsbalken ist per Definition alles andere als einfach. –

+0

Was hast du probiert? Hast du auf http://php.net/manual/en/session.upload-progress.php nachgeschaut? –

+1

Ich bin durch den Prozess verwirrt. Erhalten Sie den Status, nachdem Sie das Javascript erzwungen haben, das Formular zu senden? Oder mit einem onclick-Ereignis beginnt der Upload und Sie bekommen gerade seinen Status? –

Antwort

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> 
+0

Würde das funktionieren? –

+0

Seien Sie vorsichtig bei einigen kleinen Fehlern, die Sie haben .. Beispiel "==" auf setInterval Teil ... –

+0

Danke - ich werde das bearbeiten. Wie geht das dann weiter? Wie aktualisiere ich die Seite, auf der ich bin, sobald der Upload abgeschlossen ist? –

Verwandte Themen