Ausgabe vor Dateiupload

Microhome

Erfahrenes Mitglied
Servus und ein frohes Fest euch allen!
Ich habe ein einfaches Formular, über welches ich eine Datei, max. 50 MB, hochladen möchte. Nun möchte ich NACH dem Senden aber VOR dem Upload einen einfachen Text ala "Datei wird hochgeladen" ausgeben. flush() funktioniert leider nicht, da diese Funktion erst NACH dem Upload wirkt. Habt ihr eine Idee?


Code:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="zipfile">
<input type="image" src="images/btn-upload-file.gif">
</form>
<?php
if (($_FILES['zipfile']['tmp_name'] <> "") && ($_FILES['zipfile']['type'] == "application/zip")){
     echo "Datei wird hochgeladen";
     flush();
}
?>
 
Bei HTTP wird grundsätzlich zuerst hoch und dann heruntergeladen. Anfrage-Antwort.

Wirst also mit Java-Script arbeiten müssen. Da kannn ich dir allerdings nicht sonderlich weiterhelfen. Das einfachste wird sein dir einfach die Scripte an zu sehen bei denen es funktioniert.
 
Vielen Dank für deine Antwort.
Soweit ich weiß kann man via ftp_nb_fput() die Datei über FTP hochladen, ohne dass dieser Upload das Script blockiert. Die Frage ist nur ob ich damit auch eine lokale Datei an den Server senden kann.
 
Hallo!

ftp_nb_fput — Speichert eine geöffnete Datei auf den FTP-Server (nicht blockierend).
ftp_nb_put — Speichert eine Datei auf dem FTP-Server (nicht blockierend).

Zweitere Variante dürfte wohl eher zum gewünschten Ziel führen..... vermute ich jedenfalls.

Gruss Dr Dau
 
Die FTP Variante ist mir ehrlich gesagt ein bisschen zu kompliziert.

Das ganze müsste doch auch einfacher zu realisieren sein?! Wird die Datei direkt nach dem Drücken des Submit-Buttons gesendet? Irgendwie muss man doch dazwischen noch einen PHP Befehl ausführen können?!
 
Nun, bei einem herkömmlichen Uploadformular, wie man es an allen Ecken und Kanten findet, findet eine eventuelle weitere Scriptaufgabe (z.B. Ausgabe eines Textes) erst dann statt wenn die Datei vollständig hochgeladen ist.

Ausserdem wirst Du mit grosser Wahrscheinlichkeit bei Deiner Dateigrösse (bis 50MB) Probleme mit upload_max_filesize (max. Dateigrösse die hochgeladen werden darf) und max_execution_time (max. Ausführungszeit des Scripts) bekommen.
Beide Werte bekommst Du mittels phpinfo() raus.
Ausserdem können diese Werte jederzeit durch den Hoster geändert werden.
Soweit ich weiss, ich habe mich aber noch nicht selber mit den FTP-Funktionen beschäftigt, spielten diese Werte bei den FTP-Funktionen keine (bzw. keine wesentliche) Rolle.
 
Hallo Dr Dau,
ja das habe ich bereits in der php.ini geändert und ist kein Problem.
Habe das ganze jetzt auch umgeplant, so dass die maximale Größe 7 MB sein wird.
Nur das ändert leider nichts daran, dass diese ZIP-Datei ersteinmal auf den Server übertragen werden muss. Leider kann ich auch nichts mit AJAX machen, weil ich nach dem Senden (vor dem Upload) einen PHP Befehl zum ändern eines PEAR::PROPGRESS2 Statusbalken ausführen muss.

Nur irgendwie muss das ganze ja möglich sein?!
 
Es sollte möglich sein, den Submit-Button des Formulars durch einen normalen Button auszutauschen, auf dessen Klick ein Ajax-Request ausgelöst und dessen Feedback dann genutzt wird, um das Upload-Formular zu submitten.

Edit: Lese gerade, dass Ajax wegen dem PEAR-Paket nicht möglich sein soll. Warum ist das so?
 
Naja ich könnte beim submit nen AJAX Request senden der irgendetwas ausgibt. Aber kann ich denn in dieser externen PHP Datei den Balken der Hauptdatei ändern Ich werds einfach mal versuchen.
 
Lade den Fortschrittsbalken gleich mit denselben Funktionen, die auch der Ajax-Request triggert. Und nicht vergessen: Den Ajax-Call nicht mit dem Submit starten, sondern mit einem normalen Button, der nach Abschluss des Ajax-Aufrufs erst das Formular abschickt (automatisch). Wenn Du beim Submit den Ajax loslässt, wird er nicht fertig werden, bevor der Browser die Seite wegen dem Formular-Action neu laden will.
 
Zurück