Язык программирования PHP



         

Загрузка файла на сервер - часть 2


Здесь 'myfile' - это имя элемента формы, с помощью которого была произведена загрузка файла на сервер. То есть оно может быть другим, если элемент формы назвать иначе. Но вот другие ключи (name, type и т. д.) остаются неизменными для любой формы.

Если register_globals=On, то доступны также дополнительные переменные, такие как $myfile_name, которая эквивалентна $_FILES['myfile']['name'], и т.п.

 Ошибок при загрузке в PHP выделяют пять типов и соответственно $_FILES['myfile']['error'] может иметь пять значений:

0 - ошибки не произошло, файл загружен успешно

1 - загружаемый файл превышает размер, установленный директивой upload_max_filesize в файле настроек php.ini

2 - загружаемый файл превышает размер, установленный элементом MAX_FILE_SIZE формы html

3 - файл был загружен частично

4 - файл загружен не был

По умолчанию загруженные файлы сохраняются во временной директории сервера, если другая директория не указана с помощью опции upload_tmp_dir в файле настроек php.ini. Переместить загруженный файл в нужную директорию можно с помощью функции move_uploaded_file().

Функция move_uploaded_file() имеет следующий синтаксис:

bool move_uploaded_file (временное_имя_файла, место_назначения )

Эта функция проверяет, действительно ли файл, обозначенный строкой временное_имя_файла, был загружен через механизм загрузки HTTP методом POST. Если это так, то файл перемещается в файл, заданный параметром место_назначения (этот параметр содержит как путь к новой директории для хранения, так и новое имя файла).

Если временное_имя_файла задает неправильный загруженный файл, то никаких действий произведено не будет, и move_uploaded_file() вернет FALSE. То же самое произойдет, если файл по каким-то причинам не может быть перемещен. В этом случае интерпретатор выведет соответствующее предупреждение. Если файл, заданный параметром место_назначения, существует, то функция move_uploaded_file() перезапишет его.

<? /* В версиях PHP, более ранних, чем 4.1.0, вместо массива $_FILES нужно использовать массив $HTTP_POST_FILES */

$uploaddir = 'c:/uploads/'; // будем сохранять загружаемые // файлы в эту директорию $destination = $uploaddir . $_FILES['myfile']['name']; // имя файла оставим неизменным print "<pre>"; if (move_uploaded_file( $_FILES['myfile']['tmp_name'], $destination)) { /* перемещаем файл из временной папки в выбранную директорию для хранения */

print "Файл успешно загружен <br>"; } else { echo "Произошла ошибка при загрузке файла. Некоторая отладочная информация:<br>"; print_r($_FILES); } print "</pre>"; ?>

Пример 9.12. Программа загрузки файла на сервер




Содержание  Назад  Вперед