Я могу создать свой каталог, но я не могу поместить файл в каталог.
#!/usr/bin/perl
use Cwd;
use CGI;
my $dir = getcwd();
print "Current Working Directory: $ dir\n";
my $photoDir = "$dir/MyPhotos";
mkdir $photoDir
or die "Cannot mkdir $photoDir: $!"
unless -d $photoDir;
my $query = new CGI;
my $filename = $query->param("Photo");
my $description = $query->param("description");
print "Current filename: $filename\n";
my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' ); $filename = $name . $extension;
print $filename;
my $upload_filehandle = $query->upload("Photo");
open ( UPLOADFILE, ">$photoDir/$filename" )
or die "$!";
binmode UPLOADFILE;
while ( <$upload_filehandle> )
{ print UPLOADFILE; }
close UPLOADFILE;
Трассировка стека CGI не показывает ошибок, но журнал показывает, что нет выхода
LOG: 5 5020-0:0:0:0:0:0:0:1%0-9: CGI output 0 bytes.
Руководство CGI.pm предлагает этот путь для сохранения загруженных файлов. Попробуйте этот дополнительный метод проверки и записи и посмотрите, помогает ли это.
$lightweight_fh = $q->upload('field_name');
# undef may be returned if it not a valid file handle
if (defined $lightweight_fh) {
# Upgrade the handle to one compatible with IO::Handle:
my $io_handle = $lightweight_fh->handle;
open (OUTFILE,'>>','/usr/local/web/users/feedback');
while ($bytesread = $io_handle->read($buffer,1024)) {
print OUTFILE $buffer;
}
}
Кроме того, убедитесь, что ваша форма HTML имеет тип типа: <form action=... method=post enctype="multipart/form-data">