Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пересылка файлов




Пример 11.1.

В этом примере форма страницы XHTML содержит текстовое поле для имени и фамилии пользователя. Также кодируется скрытое поле, в которое заносится с помощью функции PHP date() текущие дата и время. Когда нажимается кнопка отправки формы, создается новый текстовый файл 'formfile.txt' и открывается в режиме добавления:

$file_name = "c:\formfile.txt";

$open_file = fopen($file_name, "a+");

Затем переменной $file_contents присваиваются значения суперглобальных переменных POST, содержащие имя и фамилию пользователя и текущее значение даты и времени. К строкам присоединяется запятая, чтобы создать разграничители этих значений. В конце каждой строки добавляется символ новой строки для создания возврата каретки:

$file_contents= $_POST['FName']. ",". $_POST['LName']. ",". $_POST['DateTime']."\n";

Наконец, содержимое переменной $file_contents записывается (добавляется) в текстовый файл. Файл закрывается, и используется оператор echo для вывода подтверждающего сообщения в окне браузера:

fclose($open_file);

echo "Данные формы успешно записаны в файл";

В некоторых динамичных приложениях Web необходимо разрешать пользователям пересылку файлов с локального компьютера на сервер Web. Такое приложение может позволить пользователям обмениваться файлами с другими пользователями или просто предоставить механизм для хранения файлов для будущего использования. Этот раздел вводит функцию PHP для пересылки файлов.

В PHP пересылку файлов можно реализовать с помощью следующей функции:

move_uploaded_file(имя_файла, место_назначения) – перемещает файл в указанное место на сервере.

Прежде чем переходить к деталям кода PHP, давайте посмотрим на элементы управления формы XHTML, необходимые для создания страницы для пересылки файлов.

<form enctype="multipart/form-data" action="upload.php" method="post">

 

Select File: <input type="file" name="uploadFile">

 

<input name="SubmitB" type="submit" value="Upload File">

 

</form>

Блок кода начинается со стандартного тега XHTML <form>. Кроме атрибутов action и method форма, используемая для пересылки файлов, должна включать тип кодирования или атрибут "encrypt". Когда форма применяется для пересылки файлов должно использоваться значение атрибута encrypt "multipart/form-data".

После тега <form> следует элемент текстового поля <input>. Этот элемент управления нужен для определения расположения и имени файла, который будет пересылаться. Он содержит атрибуты name и type. Атрибут type должен быть задан как "file". name имеет определенное пользователем значение, которое будет использоваться сервером для идентификации файла источника во время процесса пересылки.

Текстовое поле file включает также кнопку "Browse…" при выводе в окне браузера. Когда нажимается эта кнопка, появляется диалоговое окно, позволяющее пользователю найти на своем локальном компьютере файл, который будет пересылаться.

Последним элементом управления является кнопка отправки (submit). Кнопка отправки используется для инициирования процесса отправки формы. Когда нажимается эта кнопка, информация о файле посылается на страницу upload.php, которая содержит код PHP для пересылки файла в папку, расположенную на сервере Web.

После кодирования формы XHTML на страницу можно добавить сценарий PHP для выполнения динамической пересылки файла. Когда файл пересылается с помощью функцииmove_uploaded_file(), он кратко хранится во временном месте на сервере Web. Для перемещения файла в его конечное место назначения и манипуляций с его различными свойствами, используется суперглобальный массив PHP $_FILES. Массив $_FILES применяет значение name, заданное в теге <input type="file" name="uploadFile"/> (в данном случае 'uploadFile') для идентификации пересылаемого файла. Записи, связанные с массивом $_FILES, описаны ниже.

$_FILES['uploadFile']['tmp_name'] – каталог на сервере web, где временно хранится файл. По умолчанию используется каталог uploadtemp, расположенный в папке PHP.

$_FILES['uploadFile']['name'] – имя файла в системе пользователя.

$_FILES['uploadFile']['size'] – размер файла в байтах.

$_FILES['uploadFile']['type'] – тип MIME файла.

$_FILES['uploadFile']['error'] – код ошибки, связанный с пересылкой файла (0 – успешная пересылка, 1 – файл превышает максимальный размер пересылки, 2 – файл превышает максимальный размер файла, 3 – файл частично загружен, 4 – файл не загружен).

Следующие блоки кода показывают, как массив $_FILES используется с функцией move_uploaded_file() для создания простой процедуры пересылки.

upload.php

 

<?php

 

if ($_POST[SubmitB] == "Upload File")

{

 

 

move_uploaded_file ($_FILES['uploadFile'] ['tmp_name'],

"../PHPTutorial/ECommerce/Databases/{$_FILES['uploadFile'] ['name']}");

 

echo "Файл загружен.";

 

 

}

 

 

?>

 

<form enctype="multipart/form-data" action="upload.php" method="post">

 

Select File: <input type="file" name="uploadFile">

 

<input name="SubmitB" type="submit" value="Upload File">

 

</form>

Когда нажимается кнопка "Upload File", то файл, определенный в <input type="file" name="uploadFile"/>, автоматически посылается во временную папку на сервере Web. Затем вызывается функция move_uploaded_file() для перемещения файла. Первый параметр функции, $_FILES['uploadFile'] ['tmp_name'], становится ссылкой на файл, когда функция готовится к перемещению его в конечное место назначения. Второй параметр, "../PHPTutorial/ECommerce/Databases/{$_FILES['uploadFile'] ['name']}", является относительным путем доступа к папке, в которой был временно сохранен файл. Последняя часть пути доступа включает код {$_FILES['uploadFile'] ['name']}. Это можно интерпретировать как имя файла, который был введен в текстовое поле file с именем "uploadFile". Вкратце, функция move_uploaded_file()перемещает файл из временной папки пересылки folder ($_FILES['uploadFile'] ['tmp_name']) в папку "../PHPTutorial/ECommerce/Databases/), и файл сохраняется с тем именем, которое ввел пользователь, ({$_FILES['uploadFile'] ['name']}). Файлы можно пересылать в любой каталог на сервере Web, однако папка места назначения должна иметь полномочия доступа для записи ("write").

Предыдущий пример кода иллюстрирует легкость пересылки файла, но с предположением, что процесс пересылки всегда будет работать, а ошибки никогда не будут происходить. Мы не рассмотрели, что происходит, когда пользователь пытается переслать файл, который превышает ограничение на размер, если папка загрузки не имеет подходящих полномочий безопасности или если некоторые непредвиденные сетевые проблемы мешают пересылке всего файла. Чтобы улучшить приведенный выше код пересылки, необходимо предоставить процедуры, которые проверяют ошибки и предоставляют пользователю информацию о том, как исправить эти проблемы.

Следующие блоки кода показывают модифицированную версию предыдущей процедуры пересылки, которая содержит проверку ошибок.

upload.php

 

<?php

 

if ($_POST[SubmitB] == "Upload File")

{

 

move_uploaded_file ($_FILES['uploadFile'] ['tmp_name'],

"../PHPTutorial/ECommerce/Databases/{$_FILES['uploadFile'] ['name']}");

 

if($_FILES['uploadFile'] ['error'] > 0)

{

switch ($_FILES['uploadFile'] ['error'])

{

 

case 1: echo 'Файл превышает максимальный серверный размер для пересылки';

break;

 

case 2: echo 'Файл превышает максимальный размер файла';

break;

 

case 3: echo 'Файл загрузился только частично';

break;

 

case 4: echo 'Никакой файл не загрузился';

break;

 

}

 

}

 

else

 

{

 

echo 'Файл успешно загружен';

 

}

}

 

?>

 

<form enctype="multipart/form-data" action="upload.php" method="post">

 

Select File: <input type="file" name="uploadFile"/>

 

<input type="hidden" name="MAX_FILE_SIZE" value="1000000"/>

 

<input name="SubmitB" type="submit" value="Upload File"/>

 

</form>




Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 989; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.