(PHP 4 >= 4.0.3, PHP 5, PHP 7)
move_uploaded_file — Verschiebt eine hochgeladene Datei an einen neuen Ort
$filename
, string $destination
)
Diese Funktion prüft, dass die mit filename
bezeichnete Datei eine gültige Upload-Datei ist (d.h., dass sie
mittels PHP's HTTP POST Upload-Mechanismus hochgeladen wurde).
Ist die Datei gültig, wird sie zum in
destination
bezeichneten Dateinamen
verschoben.
Diese Art der Prüfung ist besonders wichtig, wo irgendeine Aktion mit hochgeladenen Dateien deren Inhalt dem User zugänglich machen könnte, oder gar anderen Usern auf dem selben System.
filename
Der Dateiname der hochgeladenen Datei.
destination
Das Ziel der zu verschiebenden Datei.
Gibt bei Erfolg TRUE
zurück.
Ist filename
keine gültige Datei, wird keine Aktion
ausgeführt, und move_uploaded_file() gibt FALSE
zurück.
Ist filename
eine gültige Datei, jedoch
aus irgendeinem Grund nicht verschoben werden kann, wird keine
Aktion ausgeführt, und move_uploaded_file()
gibt FALSE
zurück. Zusätzlich wird eine Warnung
ausgegeben.
Beispiel #1 Hochladen mehrerer Dateien
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// basename() kann Directory-Traversal-Angriffe verhindern;
// weitere Validierung/Bereinigung des Dateinamens kann angebracht sein
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>
Hinweis:
move_uploaded_file() berücksichtigt sowohl Safe Mode wie auch open_basedir. Allerdings werden die Beschränkungen nur auf den
destination
Pfad angewandt, um das Verschieben von hochgeladenen Dateien zu erlauben, bei denen sichfilename
mit den Beschränkungen im Konflikt befinden könnte. move_uploaded_file() gewährleistet die Sicherheit dieser Operation dadurch, dass nur diejenigen Dateien verschoben werden dürfen, die mit PHP hochgeladen wurden.
Existiert die Zieldatei bereits, wird sie überschrieben.