Ladebalken bei PHP-Upload
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absenden
angeben
ansatz
ausgeben
benutzer
code
container
datei
display
file
ftp
funktion
horn
http
login
machen
pfad
server
standard
verbindung
-
Hallo,
ich sitze gerade vor einem etwas lächerlichen Problem.
Ich biete auf einer Seite dem Benutzer die Möglichkeit Dateien auf einen anderen FTP-Server hochzuladen. Das Hochladen funktioniert auch Problemlos, allerdings möchte ich zusätzlich einen kleinen Ladebalken ausgeben.
Nachdem ich erfolgslos nach einer Möglichkeit gesucht habe, wie man den Fortschritt des Uploads anzeigt, habe ich mich dazu entschieden einen endlosen Ladebalken anzuzeigen, der so lange angezeigt werden soll, bis die Datei hochgeladen wurde. Doch auch das möchte nicht funktionieren.
Mein Code:
<div class="center" id="loading">Loading...<br /><img src="img/loading.gif" alt="Loading..." /></div> <?php if (isset($_POST['upload'])) { //[...] Überprüfung auf zugelassene Dateiendungen //[...] FTP-Logindaten aus der Datenbank /* Herstellen der Verbindung und Login */ $verbindung = ftp_connect($ftp_server); $login = ftp_login($verbindung, $benutzername, $passwort); /* Überprüfung und ggf. Fehlermeldung ausgeben */ if ((!$verbindung) || (!$login)) { echo 'Es konnte keine Verbindung mit dem FTP-Server aufgenommen werden!'; } else { echo 'Verbindung hergestellt...'; } $ziel_pfad = 'mein/Pfad/'; $ziel_file = $ziel_pfad.$_FILES['userfile']['name']; $file = $_FILES['userfile']['tmp_name']; $upload = ftp_put($verbindung, $ziel_file, $file, FTP_BINARY); if (!$upload) { echo 'Hochladen der Datei fehlgeschlagen!</div>'; } else { echo 'Die Datei wurde erfolgreich hochgeladen!</div>'; echo '<script type="text/javascript">document.getElementById("loading").style.display = "none";</script>'; } ftp_close($verbindung); } } else { echo '<script type="text/javascript">document.getElementById("loading").style.display = "none";</script>'; } ?> <form enctype="multipart/form-data" action="" method="post"> <input type="hidden" name="upload" value="true" /> <div id="upload_form"> <input type="file" name="userfile" /><br /><br /> <button type="submit">Speichern</button> </div> </form>
Mein Ansatz:
1. Der Benutzer klickt auf den Submit-Button
2. Der Container mit dem Ladebalken bleibt sichtbar, da er nicht per Javascript auf unsichtbar gesetzt wird.
3. Ist upload nicht gesetzt, wird der Ladebalken per Javascript unsichtbar gemacht.
Was läuft hierbei falsch?
Vielen Dank für jede hilfreiche Antwort.
Grüße ploco -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich würde es so machen:
* du hast auf der Seite mit dem Upload-Form einen versteckten Ladebalken.
* Du sendest das Forumar an ein verstectes IFrame und zeigst den Ladebalken an,
* Sobald das IFrame geladen ist blendest du den Ladebalken wieder aus.
mfg Andre -
na ja, ich denke mal, dass du
class="center" id="loading"
So definiert hast, dass display="none" ist.
Dann musst du beim Absenden des Formulars natürlich auch sagen, dass das ganze wieder sichtbar ist, indem du in den Formulartag
ein onsubmit einbau was dann display="visible" macht.
im übrigen... wenn du
class="center" id="loading"
Standardmäßig unsichtbar hast, brauchst du es später nicht mehr unsichtbar machen, weil PHP die Seite eh neu lädt und dann wieder die standards lädt.
Gruß
technofan -
Ich würde das mittelt AJAX lösen.
Beim Submit eine Javascript-Funktion aufrufen, die den Ladebalken anzeigt und anschließend einen Request absenden, welcher den Upload macht. Beim AJAX-Request kannst du dann eine Callback-Funktion angeben, die den Ladenbalken wieder ausblendet.
Hier gibts ein ganz einfaches Beispiel mit Callback-Funktion:
http://www.torsten-horn.de/techdocs/javascript-ajax.htm#Beispiel1 -
Und wie bitte willst du mit AJAX eie Datei hochladen? Soweit ich weis geht das nicht.
-
OK, mein Fehler, sorry.
Hier ein Link mit einer simplen Prüfung:
http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage