Forum Webscript.Ru
Программирование => Perl => Тема начата: D.O. от 22 Января 2005, 21:52:49
-
Не могу прочитать содержимое загруженного файла.
Я делаю так:
...
use strict;
use CGI qw(:standard);
use CGI::Carp qw (fatalsToBrowser);
...
$CGI::DISABLE_UPLOADS = 0
...
my $query = new CGI;
...
my $image_file = $query->param("userpic");
...
my $test = "no";
my $new_file_name = "empty";
if($image_file) {
no strict;
$image_file =~ m/(\\w+\\.\\w\\w\\w)$/i;
$new_file_name = $1;
open UPLOADED, ">>temp\\\\$new_file_name";
binmode UPLOADED;
my ($bytesread, $buffer);
while($bytesread = read($image_file, $buffer, 1024)) {
$test = "yes";
print UPLOADED $buffer;
}
close UPLOADED;
} else {
$new_file_name = "fuck-up";
}
...
В результате файл создаётся, но он имеет нулевую длину.
Переменная $test используется просто для проверки - её значение получается "no".
Почему я не могу прочитать содержимое загруженного файла?
-
добавь:
my $fh = $query->upload(\'userpic\');#получаем дескриптор
...
и замени:
binmode(UPLOADED);
binmode($fh);
while($bytesread = read($fh, $buffer, 1024)) {
..
}
а эта штука, которую ты использовал:
my $image_file = $query->param("userpic");
это лишь имя файла, т.е. и используй ее по назначению
..
D.O.:
open UPLOADED, ">>temp\\\\$new_file_name";
а зачем ты дописываешь \'>>\', а не пишешь новый файл? Понятно, что если такого нет, то открывается новый, но ведь есть вероятность, что такое имя будет.