Иногда возникает необходимость загружать файлы на виртуальный сервер не по протоколу FTP (как это делается в большинстве случаев), а прямо через браузер по протоколу HTTP. Это может быть полезно как для администратора сервера, так и для пользователей конкретного веб-ресурса.
Пример формы ввода
Например, если необходимо сделать загрузку фотографий посетителей на сайт, можно воспользоваться именно такой технологией: посетитель выбирает файл на диске и нажимает кнопку "Загрузить". Пример формы:
После нажатия на кнопку файл передается на сервер, где считывается скриптом. После этого файл получает нужное имя и помещается в тот каталог, который был определен веб-мастером сервера. Что далее делать с полученным файлом - дело Ваше.
Итак, разберемся подробно, что это за форма ввода и какие у нее есть особенности. Во-первых, формат тэга . Все, форма готова.
Скрипты для обработки принимаемых данных
Итак, пользователь выбрал файл на диске и нажал на кнопку. Теперь нам нужно принять пользовательский файл и сделать с ним что-нибудь. Для этого обычно используют скрипты на языках Perl или PHP. Мы рассмотрим оба варианта.
Пример скрипта на Perl
#!/usr/local/bin/perl
use CGI qw(param);
# Определяем путь к каталогу, где будут размещены файлы $down = "/path/to/download/dir/";
$myfile = param('myfile');
# Получаем имя файла, которое указал пользователь ($name) = $myfile =~ m#([^\\/:]+)$#;
# Открываем файл и определяем, что работа с ним будет идти в двоичном режиме open(OUT,">$down$name"); binmode(OUT);
# Начинаем получать данные и помещать их в файл while (<$myfile>) { print OUT $_; }
# Закрываем файл и показываем сообщение об успешной загрузке close(OUT);
print "Content-type: text/html\n\n"; print "Файл $name был успешно загружен!";
После того, как мы поместим данный скрипт в файл, положим его в каталог, из которого скрипты должны исполняться и назовем так, как указали в параметре action тэга |