По поводу функции open () ... файл не существует - PullRequest
1 голос
/ 01 марта 2012

Я хочу загрузить файл (изображение) на веб-сервер.

Вот фрагмент моего кода, при нажатии кнопки для загрузки файла этот код должен быть запущен. Он работает нормально до строки open ( UPLOADFILE, ">", "$upload_dir/$filename" ) or die "$!";, но затем сервер возвращает сообщение об ошибке «Нет такого файла или каталога». Я правильно установил свои разрешения, open() просто не создает файл, я думаю; любая помощь с благодарностью.

РЕДАКТИРОВАТЬ: я вернулся к этому, когда строка отладки без комментариев, я получаю искаженный заголовок из скрипта. Неверный заголовок = / srv / www / vhosts / nimml-dev.vbi .: mausdb.cgi

в противном случае я получаю: нет такого файла или каталога в строке lib_view.pl 1025.

################################################################
# upload photo if requested
if (defined(param('job')) && param('job') eq "Upload File") {
use File::Basename; #for use of fileparse()


$CGI::POST_MAX = 1024 * 100000; #max size it 10MB

my $safe_filename_characters = "a-zA-Z0-9_.-";
my $upload_dir = $global_var_href->{'URL_htdoc_basedir'} . "/jel_uploads";
my $filename = param("jel_photo");
my $query = new CGI;



if ( !$filename )
    {
    die "Photo too large to upload.";
    }

my ( $name, $path, $extension ) = fileparse( $filename, '\..*');
$filename = $mouse_id . '_' . $name . $extension;


$filename =~ tr/ /_/;
$filename =~ s/[^$safe_filename_characters]//g;
if ( $filename =~ /^([$safe_filename_characters]+)$/ ) { $filename = $1; } else { die "Filename contains invalid characters"; }

my $upload_filehandle = $query->upload("jel_photo");
#use Cwd; use Data::Dumper; { local $Data::Dumper::Useqq = 1; print(Dumper("$upload_dir/$filename")); print(getcwd(), "\n"); }
open ( OUTFILE, ">$upload_dir/$filename" ) or die "$!"; binmode OUTFILE;
    while (<$upload_filehandle> ) {print OUTFILE; } close OUTFILE;

}

1 Ответ

1 голос
/ 01 марта 2012

Добавьте причину сбоя open в ваше сообщение:

open (UPLOADFILE, ">", "$upload_dir/$filename") or die "Can't open '$upload_dir/$filename': $!\n"; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...