[PHP] Datei mit PHP per FTP hochladen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • [PHP] Datei mit PHP per FTP hochladen

    Datei mit PHP per FTP hochladen

    Mit diesem Script ist es möglich mit Hilfe von PHP eine Datei per FTP hochzuladen:

    [code:1]<?php
    $FTPServer = "URL ZUM FTP-Server";
    $FTPUser = "FTPUser";
    $FTPPasswort = "FTPPasswort";

    if(isset($_POST['send']))
    {
    $connectID = ftp_connect($FTPServer);
    $handle = ftp_login($connectID, $FTPUser, $FTPPasswort);

    if($connectID && $handle)
    {
    $upload = ftp_put($connectID, $_FILES['datei']['name'], $_FILES['datei']['tmp_name'], FTP_BINARY);

    if($upload)
    {
    echo"Die Datei wurde hochgeladen!";
    }
    else
    {
    echo"Die Datei konnte nicht hochgeladen werden.";
    }

    ftp_quit($connectID);
    }
    else
    {
    echo"Es konnte leider keine Verbindung mit dem FTP-Server hergestellt werden.";
    }
    }
    else
    {
    ?>
    <form action="<?php echo$_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
    <input name="datei" type="file"><br />
    <input name="send" type="submit" value="Upload">
    </form>
    <?php
    }
    ?> [/code:1]

    Zur Erklärung:

    ftp_connect() stellt eine Verbindung zum FTP her
    ftp_login loggt sie bei FTP ein
    ftp_put lädt die Datei mit Hilfe von FTP hoch
  • Da ist ein Fehler drinnen ... ein bißchen unter der Mitte steht:

    ftp_quit($connectD);

    RICHTIG wäre:
    ftp_quit($connectID);

    Also ich bin ein ziemlicher Newbie in PHP und suche schon Stunden nach einem funktionierenden Skript. Ich will Dateien mittels FTP und PHP auf den Server hochladen, aber kaum jemand schafft es ein fehlerfreies Skript zu veröffentlichen. Meist sind unbekannte Variablen drinnen und das sind aber nicht die einzigen Fehlermeldungen. Ist ganz schön mühsam :cry:

    Aber dieses hier hat endlich, mit einer kleinen Korrektur geklappt!!! 8)

    Jubiiiii!
  • Ja das ist immer ein Erfolgserlebnis wenn man stundenlang sitzt ... nichts geht und man glaubt schon selber nicht mehr daran ... aber auf einmal erscheint die Datei tatsächlich am Server ;)

    Unten fett hervorgehoben noch eine Erweiterung, die ich benötigt habe und die vielleicht auch für andere hilfreich sein kann. Sie bewirkt, dass die hochgeladenen Dateien in einen gewünschten Ordner geschrieben werden.

    Sollte ein Ordnername falsch geschrieben werden dann erscheint die Fehlermeldung: "The system cannot find the path specified. in ..."

    oder es kommt die folgende Fehlermeldung, wenn er den (ersten?) Ordner nicht findet:
    "Warning: ftp_put() [function.ftp-put]: /webroot/newsletter/files/dateiname.gif: Access is denied. in ..."

    Den korrekten Pfad (der ja von der URL abweichen kann) hab ich herausgefunden indem ich über ein FTP-Programm in den gewünschten Ordner gewechselt bin und dann den ganzen Verzeichnispfad von dort übernommen habe.
    [code:1]
    <?php
    $FTPServer = "XXXX";
    $FTPUser = "XXXX";
    $FTPPasswort = "XXXX";
    $destDir = "/ordner/ordner/upload"; //Hier den Zielordner am FTP-Server angeben

    if(isset($_POST['send']))
    {
    $connectID = ftp_connect($FTPServer);
    $handle = ftp_login($connectID, $FTPUser, $FTPPasswort);

    if($connectID && $handle)
    {
    $upload = ftp_put($connectID, $destDir . "/" . $_FILES['datei']['name'], $_FILES['datei']['tmp_name'], FTP_BINARY);

    if($upload)
    {
    echo"Die Datei wurde hochgeladen!";
    }
    else
    {
    echo"Die Datei konnte nicht hochgeladen werden.";
    }

    ftp_quit($connectID);
    }
    else
    {
    echo"Es konnte leider keine Verbindung mit dem FTP-Server hergestellt werden.";
    }
    }
    else
    {
    ?>
    <form action="<?php echo$_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data" method="post">
    <input name="datei" type="file"><br />
    <input name="send" type="submit" value="Upload">
    </form>
    <?php
    }
    ?>[/code:1]