Я искал в Интернете код, который можно использовать, чтобы позволить пользователям моего сайта загружать фотографии.Я пробовал несколько Perl-кодов с открытым исходным кодом, все с одинаковым результатом: новый файл, загруженный на мой сервер, пуст!
Вот код:
Во-первых, веб-страница с запросомдля файла:
<form name="input" action="/cgi-bin/upload.pl" method="get" ENCTYPE="multipart/form-data">
Upload Photo:<input type="file" name="pic" /><BR>
<input type="submit" name="Submit" value="Submit Form" />
Теперь для кода загрузки:
#!/usr/bin/perl
use CGI;
my $cgi = new CGI;
my $dir = "/home/mydomain/www/wwwboard/uploads";
my $file = $cgi->param('pic');
my $filename = $file;
$filename =~ s/^.*\\//;
$filename =~ s/^.*\///;
$filename =~ s/\s /_/g;
open(LOCAL, ">", "$dir/$filename") or die $!;
while(<$file>) {
binmode LOCAL;
print LOCAL $_;
}
close(LOCAL);
print "Content-type: text/html\n\n";
print "$file has been successfully uploaded... thank you.\n";
Я не эксперт по Perl, но мне кажется, что проблема в том, что переменная $ file =$ cgi-> пары ( 'ПИК');только подбирает базовое имя дескриптора файла с компьютера пользователя.Например, когда я пытаюсь загрузить файл с именем «/home/nick/Pictures/photo.JPG», сообщение, которое я получаю с сервера, говорит: «photo.JPG был успешно загружен ... спасибо».Может быть, это не проблема, я не знаю ...
Я получаю тот же результат, используя Firefox и Chrome.Разрешения для папки загрузки - 777.
Я знаю, что безопасность в этом коде слабая.Я могу добраться до этого позже.сейчас я просто хочу, чтобы это сработало.