Per JS den Fortschritt eines Uploads prüfen?
Sven
- javascript
Hallo,
ich möchte gerne die Möglichkeit anbieten, mehrere Dateien gleichzeitig hochzuladen. Dazu wollte ich einfach ein Formular machen und die Feldern vom Typ "file" über Arrays ansprechen:
<input type="file" name="datei[]" ... >
Generell würde ich die Uploads dann über PHP prüfen, in die passenden Verzeichnisse verschieben, usw.
Ich würde dem Nutzer aber gerne einen optischen Statusbericht liefern können, beispielsweise:
Lade Datei 2 von 5 hoch...
Nur: Wie bekomme ich diese Statusmeldungen? Woher weiß ich, wann eine Datei fertig geladen wurde, und die nächste beginnt?
Grüße
Sven
Hi,
das könnte per AJAX funktioniern. Ich kenn mich damit zwar nicht wirklich aus, aber es kann auf PHP skripte zugreifen, die dann überprüfen, ob das File da ist.
lg davidp
Hi,
das könnte per AJAX funktioniern. Ich kenn mich damit zwar nicht wirklich aus, aber es kann auf PHP skripte zugreifen, die dann überprüfen, ob das File da ist.
Stimmt: Hm... Ajax ist für mich kein Problem, aber ich frage mich, wie ich überprüfen will, ob die Datei da ist. Denn solange der Upload noch läuft, werden die hochgeladenen Dateien vom PHP-Script ja noch nicht bearbeitet.
Das heißt, ich müsste den temporären Namen der Datei haben, den der Server ihr gegeben hat... und dann so ganz nebenbei noch die Dateigröße vergleichen, dann existieren tut die Datei ja sobald der Upload begonnen hat, nur ist sie dann noch nicht fertig. Ein reiner Check, ob sie existiert, reicht also nicht aus...
Denke ich! Korrigiert mich, wenn ich mich irre... und wie kann ich über ein anderes PHP-Script feststellen, wie der temporäre Dateiname des Uploads lautet? Das wäre ja die Grundvoraussetzung, um per Ajax den aktuellen Stand abzufragen...?
Grüße
Sven
Hi,
in meinem Upload-Skript (kopiert) verläuft das verschieben folgendermaßen:
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) echo "OK!";
statt echo "ok"
kommt dann eben uploade das nächste. Dann kann die existenz per PHP bzw. AJAX überprüft werden. (Eine Angabe über die bereits upgeloadete Menge kann aber (glaube ich) nicht gegeben werden!)
lg davidp
Hi,
in meinem Upload-Skript (kopiert) verläuft das verschieben folgendermaßen:
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) echo "OK!";
statt
echo "ok"
kommt dann eben uploade das nächste.
Vielen Dank für die Hilfe erstmal, aber ich glaube, das kann nicht funktionieren. Dein Script startet imho erst mit der Bearbeitung, wenn die Datei hochgeladen wurde. Bei mehreren Dateien werden diese ebenfalls in "einem Rutsch" hochgeladen und dann erst per Script bearbeitet.
Ich werd mal googlen, ob ich den temporären Dateinamen
$_FILES['uploaded']['tmp_name']
vorher irgendwie selbst festlegen oder beeinflussen kann. Dann könnte ich diesen schon beim Aufruf der Seite festlegen, in eine Session speichern und dann über eine separate PHP-Datei (die dann über Ajax aufgerufen wird) abfragen, ob die Datei schon auf dem Server vorhanden ist.
Grüße
Sven
Hallo,
ich habe dieses Script entdeckt. Alles was für den Betrieb notwendig ist, ist serverseitige Unterstützung von Perl und PHP. Eine sehr schöne Lösung, wie ich finde... letztlich dient es ja nur der Unterhaltung des Nutzers, aber beim Hochladen mehrere Dateien von 100-500MB Größe war mir so eine Statusmeldung schon wichtig.
Wie das genau funktioniert, werde ich mir jetzt erstmal ansehen - ich hab noch keinen Schimmer *g* Habs grad erst runtergeladen und bei mir installiert, aber es funzt.
Grüße
Sven