Иногда возникает необходимость загружать файлы на виртуальный сервер не по протоколу 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 тэга