move_uploaded_file

(PHP 4 >= 4.0.3, PHP 5, PHP 7)

move_uploaded_fileПеремещает загруженный файл в новое место

Описание

move_uploaded_file ( string $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.

Внимание

Если результирующий файл уже существует, он будет перезаписан.

Смотрите также