move_uploaded_file
(PHP 4 >= 4.0.3, PHP 5, PHP 7)
move_uploaded_file — Перемещает загруженный файл в новое место
Описание
$from
, string $to
) : bool
Эта функция проверяет, является ли файл from
загруженным на сервер (переданным по протоколу HTTP POST). Если файл
действительно загружен на сервер, он будет перемещён в место, указанное
в аргументе to
.
Такая проверка особенно важна в том случае, если существует шанс того, что какие-либо действия, производимые над загруженным файлом, могут открыть его содержимое пользователю или даже другим пользователям системы.
Список параметров
-
from
-
Путь к загруженному файлу.
-
to
-
Путь, по которому необходимо переместить файл.
Возвращаемые значения
В случае успешного выполнения возвращает true
.
Если from
не является загруженным файлом,
никаких действий не предпринимается и
move_uploaded_file() возвращает false
.
Если from
является загруженным файлом, но
не может быть перемещён по каким-либо причинам, никаких действий не
предпринимается и 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. Тем не менее, ограничения накладываются лишь на параметр
to
, чтобы разрешить перемещение загруженных файлов, так как параметрfrom
может конфликтовать с этими ограничениями. move_uploaded_file() гарантирует безопасность этой операции, работая лишь с теми файлами, которые были загружены через PHP.
Если результирующий файл уже существует, он будет перезаписан.
Смотрите также
- is_uploaded_file() - Определяет, был ли файл загружен при помощи HTTP POST
- rename() - Переименовывает файл или директорию
- Простой пример использования этой функции можно найти в разделе "Загрузка файлов на сервер"