(PHP 4 >= 4.0.3, PHP 5, PHP 7)
move_uploaded_file — Перемещает загруженный файл в новое место
$filename
, string $destination
)
Эта функция проверяет, является ли файл filename
загруженным на сервер (переданным по протоколу HTTP POST). Если файл
действительно загружен на сервер, он будет перемещён в место, указанное
в аргументе destination
.
Такая проверка особенно важна в том случае, если существует шанс того, что какие-либо действия, производимые над загруженным файлом, могут открыть его содержимое пользователю или даже другим пользователям системы.
filename
Путь к загруженному файлу.
destination
Путь, по которому необходимо переместить файл.
В случае успеха возвращает TRUE
.
Если filename
не является загруженным файлом,
никаких действий не предпринимается и
move_uploaded_file() возвращает FALSE
.
Если filename
является загруженным файлом, но
не может быть перемещён по каким-либо причинам, никаких действий не
предпринимается и move_uploaded_file() возвращает FALSE
.
Кроме того, отображается предупреждение.
Пример #1 Загрузка нескольких файлов
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// basename() может предотвратить атаку на файловую систему;
// может быть целесообразным дополнительно проверить имя файла
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>
Замечание:
Функция move_uploaded_file() принимает во внимание как безопасный режим, так и open_basedir. Тем не менее, ограничения накладываются лишь на параметр
destination
, чтобы разрешить перемещение загруженных файлов, так как параметрfilename
может конфликтовать с этими ограничениями. move_uploaded_file() гарантирует безопасность этой операции, работая лишь с теми файлами, которые были загружены через PHP.
Если результирующий файл уже существует, он будет перезаписан.