Приднестровская поддержка XOOPS
Загрузка файлов на сервер осуществляется с помощью формы, у которой параметр enctype равен multipart/form-data. Создадим файл file_load.html с содержимым, приведенным в листинге 48.
Листинг 48. Содержимое файла file_load.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Загрузка файлов</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<h1>Загрузка файлов</h1>
<form action="file.php" method="POST" enctype="multipart/form-data">
<div>
<input type="file" name="file_name" size="20">
<input type="submit" value="Загрузить">
</div>
</form>
</body>
</html>
Далее создаем файл file.php и добавляем в него код, представленный в листинге 49.
Листинг 49. Содержимое файла file.php
<?php
if (isset($_FILES['file_name'])) {
if ($_FILES['file_name']['error'] == 0 &&
$_FILES['file_name']['size'] > 0) {
$path = "C:\\Apache2\\htdocs\";
$path .= basename($_FILES['file_name']['name']);
if (@move_uploaded_file($_FILES['file_name']['tmp_name'], $path)) {
echo 'Файл загружен';
}
else {
echo 'Ошибка при загрузке';
}
}
else echo 'Ошибка при загрузке';
}
?>
При выборе файла с помощью кнопки Обзор и нажатии кнопки Загрузить файл будет отправлен серверу. Например, отправляем файл banner.gif. Получив файл, сервер сохраняет его в каталоге для временных файлов и создает
переменные окружения со следующими значениями:
$_FILES["file_name"]["name"] => banner.gif
$_FILES["file_name"]["type"] => image/gif
$_FILES["file_name"]["tmp_name"] => C:\php5\tmp\phpDB.tmp
$_FILES["file_name"]["error"] => 0
$_FILES["file_name"]["size"] => 14987
Значение file_name здесь может изменяться — это название поля выбора файла в HTML-форме, — а остальные параметры неизменны, и соответствующие им элементы ассоциативного массива содержат следующие данные:
□ name — первоначальное название файла;
□ type — MIME-тип файла;
□ tmp_name — путь и название временного файла;
□ size — размер файла;
□ error — код ошибки. Может принимать следующие значения:
• 0 — UPLOAD_ERR_OK — ошибок нет, файл был успешно загружен на сервер;
• 1 — UPLOAD_ERR_INI_SIZE — размер принятого файла превысил максимально допустимый размер,
который задан директивой upload_max_filesize конфигурационного файла php.ini;
• 2 — UPLOAD_ERR_FORM_SIZE — размер загружаемого файла превысил значение MAX_FILE_SIZE,
указанное в HTML-форме;
• 3 — UPLOAD_ERR_PARTIAL — загружаемый файл был получен только частично;
• 4 — UPLOAD_ERR_NO_FILE — файл не загружен.
Итак, файл загружен в каталог временных файлов. Теперь необходимо проверить, не возникло ли проблем с загрузкой. Если все в порядке, то переменная окружения $_FILES["file_name"]["error"] будет содержать значение 0.
Затем нужно скопировать файл из каталога временных файлов в нужный каталог. Если файл не скопировать из каталога временных файлов, то по завершению работы сценария он будет удален. Скопировать файл можно с помощью двух функций: copy() и move_uploaded_file().
С функцией copy() мы уже знакомы, она просто копирует файлы. Функция move_uploaded_file() имеет следующий формат:
move_uploaded_file(<Загруженный файл>, <Куда копируем>);
Она перемещает загруженный файл в новое место, первоначально проверяя, является ли файл загруженным на сервер (переданным по протоколу POST). Если файл действительно загружен на сервер, он будет перемещен в место, указанное во втором параметре. Если он не является загруженным файлом, никаких действий не предпринимается, и функция возвращает false. Если файл, указанный во втором параметре, уже существует, он будет перезаписан. Если файл был успешно перемещен, то функция возвратит true.
Отправитель | Нити |
---|
6 пользователь(ей) активно (1 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 6 далее... |