как обрабатывать данные такой формы <input type="file" >

zakysj50

как в перле обрабатываются такие данные, полученные методом GET.
вернее, как закачивается файл с помощью такой формы на сервер?
ЗЫ: Инета нет (СПАСИБО ХАКЕРСАМ!). Те книжки, которые у меня есть, про это не пишут
ЗЫЫ: Или можно ссылку на книжку в сети...

skvoria

Гетом - никак.
Пост + enctype="multipart/form-data" у формы.
Можешь воспользоваться, например, этим мануалом
http://www.sitepoint.com/article/uploading-files-cgi-perl

zakysj50

интернета нет
не можешь выложить в сетку плз?

katrin2201

самое интересное

<HTML>
<HEAD></HEAD>
<BODY>
<FORM ACTION="upload.cgi" METHOD="post" ENCTYPE="multipart/form-data">
Photo to Upload: <INPUT TYPE="file" NAME="photo">
<br><br>
Your Email Address: <INPUT TYPE="text" NAME="email_address">
<br><br>
<INPUT TYPE="submit" NAME="Submit" VALUE="Submit Form">
</FORM>
</BODY>
</HTML>


#!/usr/bin/perl -w

use CGI;

$upload_dir = "/home/mywebsite/htdocs/upload";

$query = new CGI;

$filename = $query->param("photo");
$email_address = $query->param("email_address");
$filename =~ s/.*[\/\\](.*)/$1/;
$upload_filehandle = $query->upload("photo");

open UPLOADFILE, ">$upload_dir/$filename";

binmode UPLOADFILE;

while ( <$upload_filehandle> )
{
print UPLOADFILE;
}

close UPLOADFILE;

print $query->header ( );
print <<END_HTML;

<HTML>
<HEAD>
<TITLE>Thanks!</TITLE>
</HEAD>

<BODY>

<P>Thanks for uploading your photo!</P>
<P>Your email address: $email_address</P>
<P>Your photo:</P>
<img src="/upload/$filename" border="0">

</BODY>
</HTML>

END_HTML

zakysj50

Спасибо!

zakysj50

Method Not Allowed
The requested method POST is not allowed for the URL /cgi-bin/upload.cgi.

Выводит вот такую ошибку
Что это значит? Не прописаны какие-то параметры или путь прописан неправильно?

katrin2201

Это уже зависит от твоего окружения... Если апач, то у него в факе такое написано
# Why do I keep getting "Method Not Allowed" for form POST requests?
This is almost always due to Apache not being configured to treat the file you are trying to POST to as a CGI script. You can not POST to a normal HTML file; the operation has no meaning. See the FAQ entry on CGIs outside ScriptAliased directories for details on how to configure Apache to treat the file in question as a CGI.

zakysj50

Оставить комментарий
Имя или ник:
Комментарий: