Приложение для загрузки файлов на сервер представляет собой HTML-форму (upload.html) и скрипт upload.php для ее обработки. Замечание: Upload бинарных файлов (картинок, архивов, программ и т.д.) стандартным методом часто приводит к тому, что файлы оказываются "битыми". Это связано с любовью Апача к всевозможным перекодировкам. Для того, чтоб он этим не занимался, допишите в файл httpsd.conf следующее: <Location /> CharsetRecodeMultipartForms Off </Location>
Код формы (upload.html) <html> <head> <title>Загрузка файлов на сервер</title> </head> <body> <h2><p><b> Форма для загрузки файлов </b></p></h2> <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="filename"><br> <input type="submit" value="Загрузить"><br> </form> </body> </html>
Код скрипта обработки формы (upload.php) <html> <head> <title>Результат загрузки файла</title> </head> <body>
<?php if($_FILES["filename"]["size"] > 1024*3*1024) { echo ("Размер файла превышает три мегабайта"); exit; } if(copy($_FILES["filename"]["tmp_name"], "c:/temp/".$_FILES["filename"]["name"])) { echo("Файл успешно загружен <br>"); echo("Характеристики файла: <br>"); echo("Имя файла: "); echo($_FILES["filename"]["name"]); echo("<br>Размер файла: "); echo($_FILES["filename"]["size"]); echo("<br>Каталог для загрузки: "); echo($_FILES["filename"]["tmp_name"]); echo("<br>Тип файла: "); echo($_FILES["filename"]["type"]); } else { echo("Ошибка загрузки файла"); } ?> </body> </html>
Атрибут entype формы определяет вид кодировки, которую браузер применяет к параметрам формы. Для того чтобы отправка файлов на сервер действовала, атрибуту entype необходимо присвоить значение multipart/form-data. По умолчанию этот атрибут имеет значение application/x-www-form-urlencoded. Элемент ввода этой формы должен иметь тип file. После того, как получен HTTP-запрос, содержимое загруженного файла записывается во временный файл, который создается в каталоге сервера, заданном по умолчанию для временных файлов, если другой каталог не задан в файле php.ini (директива upload_tmp_dir). Характеристики загруженного файла доступны через двумерный массив HTTP_POST_FILES. Cкрипт upload.php загружает файл на сервер и копирует его в каталог /temp/. Внимание! В демонстрационном примере файл загружается на диск С в директорию /temp. Поэтому в реальной работе на сервере замените путь c:/temp на тот, который нужен. После выполнения этого скрипта выбранный для загрузки файл будет помещен в каталог c:/temp, а броузер выдаст фразу: Файл успешно загружен В некоторых случаях требуется ограничить размер файла, который может быть загружен на сервер. К примеру, чтобы разрешить загрузку на сервер только файлов с размером не более 3 Мбайт, в приведенном скрипте содержится код: if($_FILES["filename"]["size"] > 1024*3*1024) { echo("Размер файла превышает три мегабайта"); exit; }
Максимальный размер загружаемого файла можно также задать при помощи директивы upload_max_filesize, значение которой по умолчанию равно 2 Мбайт: if($_FILES["filename"]["size"] > upload_max_filesize)
|