Anzeige
Tutorialbeschreibung

FTP-Upload per PHP

FTP-Upload per PHP

Schritt1 [Vorbereitungen]:
Als erstes brauchen wir eine PHP-Datei, die für uns den Upload tätigt.

Am besten nennen wir sie upload.php

In dem selben Ordner wo auch eure upload.php Datei liegt, erstellt ihr nun ein Verzeichniss mit dem Namen files.

Da werden eure Dateien dann abgespeichert.

Bilder

 

Schritt 2 [Die Uploadfunktion]:

Kommen wir nun zur Funktion, die für uns die Datei auf den Server lädt. Kopiert den Quelltext ab besten gleich in eure upload.php-Datei.


<?php
function upload_file($passwort="",$file_size="",$file="",$file_name="") {
   
    $ftp_host="localhost";                  //Hier den Hostname eures Servers
    $ftp_username="Username";    //Hier den FTP-Usernamen angeben
    $ftp_pass="Pass";        //Hier das FTP-Passwort angeben
    $ftp_root_to_dir="html/poule/files";    //Hier den Pfad vom root-Verzeichnisses eures Servers bis zum file-Verzeichnis


    if (file_exists("files/".$file_name)) die ("Eine Datei mit gleichem Namen existiert schon.<br><a href='javascript:history.back(1)'>Zurück</a>");

    //Destination of the file
    $dest=$ftp_root_to_dir.$file_name;

    //connect to Server via FTP
    $conn_id = ftp_connect($ftp_host);
    $login_result = ftp_login($conn_id,$ftp_username,$ftp_pass);

    // upload the file
    $upload = ftp_put($conn_id, $dest, $file, FTP_BINARY);

    if (file_exists("files/".$file_name)) return true;
    else return false;
}


Die Variablen die mit $ftp_ beginnen, müsst ihr noch ändern. Verwendet die Zugangsdaten die ihr auch braucht um euch per FTP-Programm auf euren Server zu verbinden.
Zum Beispiel könnte es so aussehen:

$ftp_host="psd-tutorials.de";
$ftp_username="Admin321";
$ftp_pass="psd2705";
$ftp_root_to_dir="html/tutorials/upload/files";

Mit der folgenden IF-Abfrage wird üebrprüft, ob eine Datei mit dem Dateinamen schon existiert, dass nichts überschrieben wird. Falls die Datei schon existiert, wird eine Fehlermeldung ausgegeben, und das Script wird abgebrochen.

Ansosnten wird eine FTP-Verbindung zum Server hergestellt, und die Datei wird hochgeladen.

Am Ende der Funktion wird überprüft ob sich nun eine Datei mit dem Dateinamen im Verzeichnis befindet. Wenn ja, dann bedeutet das, dass die Datei hochgeladen wurde, und es wird true zurückgegeben. Ansonsten ist ein unbekannter Fehler aufgetreten und es wird false als return gesendet.


Schritt3 [Das Formular und die Auswertung]:

Nun fehlt uns noch das Formular, und das Aufrufen wer Funktion, wenn dieses ausgefüllt wurde.

Hier der Quelltext:

//funtion ausführen wenn formular ausgefüllt
if (!empty($_POST)) {
    if (upload_file($file,$file_name)==true) echo "Datei erfolgreich hochgeladen!<br>";
    else echo "Es ist ein Fehler aufgetreten. Datei nicht hochgeladen!<br>";
}
?>
<html>
<head>
    <title>Upload</title>
</head>
<body>
<h1>File-Upload</h1>
<form name="upload" action="upload.php" method="post" enctype="multipart/form-data">
    Datei: <input type="file" name="file">
    <input type="submit" name="ok" value="Upload">
</form>
</body>
</html>


Kopiert ihn einfach, und hängt ihn an den anderen dran, dann habt ihr die funktioinstüchtige Datei.

Wenn die $_POST-Variable nicht leer ist, also eine Formularanfrage besteht, dann wird die Funktion upload_file aufgerufen, und ein echo ausgegeben, ob die DAtei hochgeladen ist oder nicht.

Im HTML-Bereich folgt dann noch der Quelltext für das Formular.
Wichtig ist hierbei diese paar Buchstaben im form-Tag: enctype="multipart/form-data"
Dadurch erfolgt ein Dateiupload. Lässt man das weg geht gar nichts mehr.

Ich hoffe ihr habt das alle gerafft, weil des ist mein erstes Tutorial :)
Wie immer gilt noch: Wer Rechtschreibfehler findet, darf sie behalten.

Viel Spass noch,
UrAciL

Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von AustrianKiller
  • 10.07.2011 - 20:29

so eine tutorial habe ich schon lange gesucht!
thx

Portrait von uracil
  • 10.07.2011 - 21:06

Freut mich, dass ich helfen konnte :)

Portrait von darthfly
  • 23.12.2010 - 18:20

Warning: ftp_put() [function.ftp-put]: Filename cannot be empty in
Diese nachricht bekomme ich auch. liegt anscheinen daran, das unter Firefox das element nur den dateinamen nicht aber den dateipfad zurück gibt. Hab bislang keine lösung dafür gefunden.

Portrait von frank070365
  • 24.09.2010 - 08:41

Hat auf anhieb funktioniert, Danke

Portrait von Flashstyler
  • 25.03.2010 - 21:49

Toles Tut, genau das was ich gesucht habe.
Nur leider geht es bei mir nicht ^^.
Es tritt dieser fehler auf :


Warning: ftp_put() [function.ftp-put]: Filename cannot be empty in /users/kohompa/www/html/upload.php on line 21
Es ist ein Fehler aufgetreten. Datei nicht hochgeladen!

Kann mir einer helfen?

Portrait von roadrunner25
  • 11.03.2010 - 19:42

Naja ganz gut jetzt mal testen wie es genau geht.

Portrait von Dissel2010
  • 07.02.2010 - 20:43

So einfacgh geht da? Danke, weiter so!

Portrait von suti5
  • 01.11.2009 - 13:04

Super! genau das habe ich gesucht vielen dank.

Portrait von Mainclain
  • 30.09.2009 - 11:59

Finde das Tutorial gut beschrieben, kann es leider nicht ausprobieren da ich gerade nicht daheim bin - werd ich heute Abend nachholen.
Wegen dem Fehler: Ich hab niergends gesehen das:
$file_name
festgelegt wurde - Muss natürlich angepasst werden, oder habe ich was übersehen?

Naja sonst hätte ich die Kommentare im PHP-Quelltext geschrieben, wäre vll. Übersichtlicher geworden, dennoch 5/5 Punkten.

Portrait von uracil
  • 30.09.2009 - 12:03

Die Variable $file_name wird in der Funktion mit als Parameter übergeben, also dadurch definiert. Muss also nicht neu definiert werden.
Viel Erfolg heute Abend,

Grüße,
UrAciL

Portrait von susi171188
  • 10.09.2009 - 10:43

danke!! sowas habe ich gesucht! werde es mal ausprobieren!

Portrait von Baum
  • 28.11.2008 - 13:29

Bekomme auch die fehlermeldung ...leider...

Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 29.10.2008 - 10:24

Ich ärgere mich gerade über die abgezogenen Punkte fürs Tut-Anschauen. Auch ich erhalte die Meldung, die bereits Daniel4Go erhält: "Eine Datei mit gleichem Namen existiert schon" und ein Upload erfolgt nicht.

Wenn ein Tut, dann bitte auch ein geprüftes....

Die Idee ist gut, bitte noch die Fehler beseitigen, danke.

Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 28.10.2008 - 12:58

Ich bekomme leider immer die Fehlermeldung: Eine Datei mit gleichem Namen existiert schon.

Portrait von Aimnu
  • 22.09.2008 - 12:28

Gutes Tutorial, einfach und effektiv.

Portrait von nicovod
  • 05.07.2008 - 02:15

Sehr Schickes TUT Dank dir!

Portrait von leumas
  • 05.06.2008 - 23:53

ne super sache aber funz nicht :(

Portrait von uracil
  • 06.06.2008 - 12:30

ICh muss das mal wieder überarbeiten, da gibt es auch noch ne andere Mgl. die ein bisschen einfacher ist. Kommt die Tage mal

Portrait von uracil
  • 06.06.2008 - 12:30

ICh muss das mal wieder überarbeiten, da gibt es auch noch ne andere Mgl. die ein bisschen einfacher ist. Kommt die Tage mal

Portrait von bora
  • 17.04.2008 - 01:50

Vielen Dank für das Tutorial,
ist sehr einfach und durch das Kopieren und Einfügen hat man es dann sofort zum ausprobieren bereit!

x
×
×