Создание серверных приложений на языке PERL


Загрузка файлов на сервер через Интернет.


Файлы можно загружать на веб-сервер через Интернет,используя формы.Вы,наверное,сами не раз это делали.Разберем более подробно,как это делается. Нужно создать форму с полем типа file и методом кодировки multipart/form-data.

#!/usr/local/bin/perl

print "Content-type:text/html\n\n"; print <<HTML; <html><head>

<script language="javascript">

<!-- function fill () { if (fn==document.form.entry.value) { document.form.file.value=fn; } } //-->

</script>

</head>

<body bgcolor="e6e8fa">

HTML print "<p><table width=300 bgcolor=\"bfbfbf\">\n"; print "<h3 align=center><font color=\"0000ff\">File upload:</font></h3>\n"; print "<center><FORM action=\"../cgi-bin/upload.cgi\" name=\"form\" METHOD=\"POST\" ENCTYPE=\"multipart/form-data\">\n"; print "<tr><td align=center><b>Select file:</b></td>\n"; print "<tr><td><input type=\"file\" name=\"entry\" onBlur=\"fill()\"></td>\n"; print "<tr><td><input type=\"hidden\" name=\"file\" value=\"1\"></td>\n"; print "<tr><td align=center><input type=\"Submit\" value=\"Upload\"></td></table>\n"; print "</form></center></table></body></html>\n";

Функция Javascript использована для того,чтобы передать на сервер имя загружаемого файла, включая полный путь.Далее,скрипт декодирует его,отбросит путь и загрузит файл под его именем. Функцию для декодирования в этом случае я использую готовую,нашел в Интернете,за что большое спасибо ее разработчику.

$content_type = $ENV{'CONTENT_TYPE'}; binmode STDIN; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); if ((!$content_type) || ($content_type =~ m#^multipart/form-data#)){ ($boundary = $content_type) =~ s/^.*boundary=(.*)$/\1/; @pairs = split(/--$boundary/, $buffer); @pairs = splice(@pairs,1,$#pairs-1); for $part (@pairs) { ($dump,$fline,$value) = split(/\r\n/,$part,3); next if $fline =~ /filename=\"\"/; $fline =~ s/^Content-Disposition: form-data; //; (@columns) = split(/;\s+/, $fline); ($name = $columns[0]) =~ s/^name="([^"]+)"$/\1/g;




Начало  Назад  Вперед



Книжный магазин