kostenloser Webspace werbefrei: lima-city


Ladebalken bei PHP-Upload

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    ploco

    Kostenloser Webspace von ploco

    ploco hat kostenlosen Webspace.

    Hallo,
    ich sitze gerade vor einem etwas lächerlichen Problem. :nosmile:
    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 :wave:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. a************n

    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
  4. technofan

    Moderator Kostenloser Webspace von technofan

    technofan hat kostenlosen Webspace.

    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
  5. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    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
  6. a************n

    Und wie bitte willst du mit AJAX eie Datei hochladen? Soweit ich weis geht das nicht.
  7. flashmob-riedlingen

    flashmob-riedlingen hat kostenlosen Webspace.

    OK, mein Fehler, sorry.
    Hier ein Link mit einer simplen Prüfung:
    http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!