![]() |
|
||||||||||||||
|
|
|
определяет запрос GET к странице index.php. При этом скрипту передаются параметры "name" и "page" со значениями "myname" и "10" соответственно. Как видите, запрос состоит из пар "имя=значение", объединённых через "&". Запрос отделяется от адреса страницы знаком вопроса "?". Но GET не подходит для передачи больших данных. Для этого существует метод POST. Этот метод передаёт данные скрыто от пользователя, а адрес страницы остаётся неизменным. Теоретически, метод POST позволяет передавать огромные блоки данных, но большинство провайдеров устанавливают жесткое ограничение в 5-10 мегабайт. Для реализации загрузки файла необходимо снабдить пользователя соответствующей формой. Для загрузки файлов предназначен тег input типа file.
<form action="receiver.php" method="post"
enctype="multipart/form-data">
Выберите файл для загрузки:
<input type="file" name="ufile" /><br />
<input type="submit" name="send" value="Отправить!" />
</form>
Пользователь выбирает нужный файл, нажимает кнопку "Отправить!", после чего браузер передаёт указанный файл на сервер. По окончании загрузки файла запускается receiver.php, и ему автоматически становятся доступны все переданные в форме данные. Список загруженных файлов хранится в глобальном массиве $_FILES. Это ассоциативный массив, где каждый элемент содержит описание одного из файлов. Рассмотрим на примере:
<?php
// инициализируем нужные переменные
$filename = '';
$filepath = '';
$filetype = '';
// проверяем, что файл загружался
if(isset($_FILES['ufile']) &&
$_FILES['ufile']['error'] != 4)
{
// проверяем, что файл загрузился без ошибок
if($_FILES['ufile']['error'] != 1 &&
$_FILES['ufile']['error'] != 0)
{
$error = $_FILES['ufile']['error'];
$errors []= 'Ошибка: Файл не загружен.'.
' Код ошибки: ' . $error;
}
else
{
// файл загружен на сервер
// проверяем файл на максимальный размер
$filesize = $_FILES['ufile']['size'];
if($_FILES['ufile']['error'] == 1 ||
$filesize > 3145728)
{
$filesize = ($filesize != 0)?
sprintf('(%.2f Мб)' , $filesize / 1024): '';
die('Ошибка: Размер прикреплённого файла '.
$filesize.' больше допустимого (3 Мб).');
}
else
{
$filename = $_FILES['file']['name'];
$filepath = $_FILES['file']['tmp_name'];
$filetype = $_FILES['file']['type'];
if($this->filetype == null ||
$this->filetype == '')
$this->filetype = 'unknown/unknown';
}
}
}
echo 'Успешно загружен файл: ' . $filename;
?>
Все загруженные файлы сохраняются сервером во временном каталоге и автоматически удаляются после завершения скрипта. Если вам необходимо сохранить файл на сервере - его надо переместить в один из каталогов сайта. Для этого служит специальная функция move_uploaded_file(). Обчно она используется в паре с функцией is_uploaded_file(), которая позволяет определить, был ли файл загружен через форму. Например:
<?php
// $filename - имя загруженого файла
if(is_uploaded_file($filename))
move_uploaded_file($filename,
'files/' . basename($filename));
// файл будет перемещён в каталог files/
?>
Информация о каждом загруженном файле представляется в скрипте как элемены массива $_FILES. Имя элемента определяется атрибутом name тега формы. В нашем случае атрибут name равен "ufile", значит данные об этом файле будут храниться в элементе $_FILES['ufile']. Каждый элемент $_FILES так же является массивом, содержащим пять элементов с фиксированными именами:
Размер загружаемых файлов может значительно меняться от провайдера к провайдеру. Некоторые администраторы вообще запрещают загрузку файлов. В этом случае файл всё равно может загрузиться, сервер его удалит, а скрипту сообщит, что файл был, но уже удалён. |
|
|
Спасибо, что заглянули на сайт. Надеюсь, Вам понравилось. Заходите еще. Здесь всегда рады вам :) |
|
© 2005-2012 |
E-mail: |