Datei mit PHP über FTP auf dem Server hochladen
![[Bildschirmfoto]
Dateien zum hochladen auswählen [Bildschirmfoto]
Dateien zum hochladen auswählen](img/ftp.png)
Manchmal möchte man eine Datei direkt vom PC auf dem Server hochladen ohne erst ein FTP-Programm (z.B.: Filezilla) nutzen zu müssen. Mit den FTP-Funktionen von PHP stellt dies kein Problem dar, hier folgt eine kleine Anleitung in Form eines Quelltextes.
Bei dem "FTP Client" handelt es sich um einen lokalen Webserver der auf dem PC installiert ist. Siehe: Lokalen Webserver einrichten und verwenden
Quelltext: ftp.php Ausblenden ❘ Kopieren ❘ Link ❘ Zeilen ❘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Datei auf dem Server hochladen</title>
<style>
body {
font-family: Verdana, Arial, Sans-Serif;
}
</style>
</head>
<body>
<h3>Datei auf dem Server hochladen</h3>
<?php
// PHP Fehlermeldungen anzeigen
error_reporting(E_ALL);
ini_set("display_errors", true);
$ftp_server = ''; // Server
$ftp_user_name = ''; // Benutzername
$ftp_user_pass = ''; // Passwort
// Der Pfad auf dem Server zu dem gewechselt werden soll,
// ausgehend vom obersten Verzeichnis.
$server_path = '/';
// Die Datei die vom PC hoch geladen wird, sollte sich im aktuellen Verzeichnis
// befinden ansonsten muss ein absoluter Pfad angegeben werden.
// Bsp.: C:\xampp\htdocs\test\ftp\test.txt
$file = 'test.txt';
// Der Transfer-Modus muss entweder FTP_ASCII oder FTP_BINARY sein.
$transfer_modus = FTP_ASCII;
// Verbindung zum Server aufbauen
if ($conn_id = ftp_connect($ftp_server)) {
// Anmeldung mit Benutzername und Passwort
if (ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) {
// Verzeichnis wechseln
if (ftp_chdir($conn_id, $server_path)) {
// Öffne Datei zum Lesen
$filehandle = fopen($file, "r");
// Passiven Modus einschalten
ftp_pasv($conn_id, true);
// Datei hochladen
$filename = basename($file);
if (ftp_fput($conn_id, $filename, $filehandle, $transfer_modus)) {
echo '<p>Die Datei: "' . $filename . '" wurde erfolgreich ins Verzeichnis "' . ftp_pwd($conn_id) . '" hoch geladen.</p>';
}
else {
echo '<p>Die Datei: "' . $filename . '" konnte nicht hoch geladen werden!</p>';
}
// Datei schließen
fclose($filehandle);
}
else {
echo '<p>Der Verzeichniswechsel zu: "' . $server_path . '" ist fehlgeschlagen!</p>';
}
}
else {
echo '<p>Die Anmeldung am Server: "' . $ftp_server . '" ist fehlgeschlagen!</p>';
}
// Verbindung zum Server schließen
ftp_close($conn_id);
}
else {
echo '<p>Konnte keine Verbindung zum Server: "' . $ftp_server . '" aufbauen!</p>';
}
?>
</body>
</html>
Dateien zum hochladen auswählen
![[Bildschirmfoto]
Dateien zum hochladen auswählen [Bildschirmfoto]
Dateien zum hochladen auswählen](img/ftp_upload.png)
Da es bei mehreren Dateien mühselig ist jede Datei erst ins Script zu schreiben, listet das folgende die Dateien aus einem Verzeichnis in einem Formular auf, nun kann man diese bequem auswählen und mit einem Klick auf dem Button hochladen.
Quelltext: ftp_upload.php Ausblenden ❘ Kopieren ❘ Link ❘ Zeilen ❘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Dateien hochladen</title>
<style>
body {
font-family: Verdana, Arial, Sans-Serif;
}
input[type="checkbox"]:checked + label {
color: Royalblue;
}
</style>
</head>
<body>
<?php
// PHP Fehlermeldungen anzeigen
error_reporting(E_ALL);
ini_set("display_errors", true);
$ftp_server = ''; // Server
$ftp_user_name = ''; // Benutzername
$ftp_user_pass = ''; // Passwort
// Der Verzeichnispfad auf dem Server zu dem gewechselt
// werden soll, ausgehend vom obersten Verzeichnis.
$server_path = 'dasObersteVerzeichnis/test/';
// Lokales Verzeichnis (Absoluter Pfad ohne Backslash am Ende).
$local_path = 'C:\xampp\htdocs\test';
// Formular
echo '<form method="post">
<fieldset>
<legend>Dateien hochladen</legend>
';
// Verzeichnis auslesen
$files = scanDir($local_path);
// Den Inhalt des Verzeichnises ausgeben
foreach ($files as $nr => $file) {
if (!is_dir($local_path . DIRECTORY_SEPARATOR . $file)) {
echo ' <input type="checkbox" name="file[]" value="' . $local_path . DIRECTORY_SEPARATOR . $file .
'" id="n' . $nr . '"> <label for="n' . $nr . '">' . $file . ' <small> - ' .
(number_format((filesize($local_path . DIRECTORY_SEPARATOR . $file) / 1024), 2, ',', '.')) .
' KB - ' . date("d.m.Y", fileMtime($local_path . DIRECTORY_SEPARATOR . $file)) .
'</small></label> <br>' . PHP_EOL;
}
}
echo ' <br>
<input type="submit" value="OK">
</fieldset>
</form>
';
// Wurden Daten über POST gesendet
if ("POST" == $_SERVER["REQUEST_METHOD"]) {
// Wurde mind. eine Datei ausgewählt
if (isset($_POST["file"])) {
// Verbindung zum Server aufbauen
if ($conn_id = ftp_connect($ftp_server)) {
// Anmeldung mit Benutzername und Passwort
if (ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) {
// Verzeichnis wechseln
if (ftp_chdir($conn_id, $server_path)) {
// Die über POST gesendeten Dateinamen in einer Schleife auslesen
foreach ($_POST["file"] as $file) {
// Transfer-Modus je nach Dateityp
$transfer_modus = false;
$file_type = pathinfo($file, PATHINFO_EXTENSION);
// Text basierte Dateien (ggf. anpassen)
if (in_array($file_type, ["txt", "htm", "css", "php", "js", ])) {
$transfer_modus = FTP_ASCII;
}
// Binäre Dateien (ggf. anpassen)
if (in_array($file_type, ["jpg", "gif", "png", ])) {
$transfer_modus = FTP_BINARY;
}
// Transfer-Modus (true)
if ($transfer_modus) {
// Öffne Datei zum Lesen
$file_handle = fopen($file, "r");
// Passiven Modus einschalten
ftp_pasv($conn_id, true);
// Datei hochladen
$file_name = basename($file);
if (ftp_fput($conn_id, $file_name, $file_handle, $transfer_modus)) {
echo '<p>Die Datei: "' . $file_name . '" wurde erfolgreich ins Verzeichnis "' .
ftp_pwd($conn_id) . '" hoch geladen.</p>';
}
else {
echo '<p>Die Datei: "' . $file_name . '" konnte nicht hoch geladen werden!</p>';
}
// Datei schließen
fclose($file_handle);
}
else {
echo '<p>Unbekannter Dateityp: "' . $file_type . '"!</p>';
}
}
}
else {
echo '<p>Der Verzeichniswechsel zu: "' . $server_path . '" ist fehlgeschlagen!</p>';
}
}
else {
echo '<p>Die Anmeldung am Server: "' . $ftp_server . '" ist fehlgeschlagen!</p>';
}
// Verbindung zum Server schließen
ftp_close($conn_id);
}
else {
echo '<p>Konnte keine Verbindung zum Server: "' . $ftp_server . '" aufbauen!</p>';
}
}
else {
echo '<p>Bitte wählen Sie mind. eine Datei aus!</p>';
}
}
?>
</body>
</html>
➤ Gefällt Ihnen das Skript oder haben Sie einen Fehler gefunden? Dann freue ich mich auf Ihren Kommentar.
Tipps
- Sitemaps-Protokoll für Suchmaschinen automatisch erstellen
- Sorgen Sie dafür, dass die Nutzer auf einen größeren Teil Ihrer Website aufmerksam werden mit einem „Sitemaps-Protokoll”. Dies stellt eine einfache Möglichkeit für Webmaster dar, Suchmaschinen Seiten auf Ihrer Website zu melden, die zum durchsuchen verfügbar sind.
- Fehler 404 mit .htaccess abfangen
- Eine Website wird öfters umgebaut, Seiten kommen hinzu, andere Seiten werden entfernt oder bekommen eine neue Adresse. Eine selbst gestaltete Fehler-Weiterleitungsseite, leitet den Besucher sicher zum Angebot der Webseite.
- Formulardaten über AJAX überprüfen und speichern
- Ohne lästigen Seitenwechsel werden die eingegebenen Daten im Formular überprüft und gespeichert.
- Lokalen Webserver einrichten und verwenden
- Um PHP-Scripte auszuführen benötigt man einen Webserver. Um nun nicht jede Datei zum testen erst per FTP auf seinen Webserver zu laden ist es sinnvoll, sich lokal auf dem Rechner einen sog. lokalen Webserver zu installieren.
Abonniere meinen RSS-Feed
um über aktuelle Seiten benachrichtigt zu werden.
Tooltip Suchmaschine Mausrad Audiodatei JSON Dynamische Seiten Diashow Mimetypen RSS Feed Modal-Fenster Metaphone Wecker Audio-Player Zeit-Differenz Sortierkasten Zeitfunktionen Zebra-Tabelle Zoom-Funktion Formular Generator Counter CSS-Counter Sitemaps-Protokoll Bausteine Event-Kalender Zufallsfarbe