[英]Error in file upload using perl “read() on unopened filehandle”
當我使用perl上傳文件時,我正面臨讀取文件錯誤
fileparse_set_fstype('MSWin32');
my ($OriginalName,$OriginalPath) = fileparse( $CgiRef->{'filename'} );
my $LocalName = $_ . $OriginalName;
open(FILE, ">$config->{'BASE_PATH'}/files/$LocalName")
or die "Could not open file:$!";
my $Req = new CGI;
while (read($Req->param('filename'), my $Buffer, 1024))
{
print FILE $Buffer;
}
close(FILE)
訪問$CgiRef->{'$filename'}
或任何引用變量都沒有問題。 請告訴我上傳時的實際問題在哪里。 現在它在未打開的文件句柄上顯示錯誤read()
你試圖從錯誤的地方讀書。 在CGI-land中,使用$cgi->upload('varname')
來獲取您嘗試接收的對象的文件句柄。
您的代碼段的修改版本應該有效:
fileparse_set_fstype('MSWin32');
my ($OriginalName,$OriginalPath) = fileparse( $CgiRef->{'filename'} );
my $LocalName = $_ . $OriginalName;
open(FILE, ">", "$config->{'BASE_PATH'}/files/$LocalName")
or die "Could not open file:$!";
my $Req = CGI->new();
# Get the filehandle for the upload content
my $Req_file = $Req->upload('filename');
# Save to FILE
while (<$Req_file>) {
print FILE;
}
close(FILE);
請注意,請始終使用3 param版本的open
。 它更干凈,更安全,更清晰。 有關解釋,請參閱Modern Perl 。
可以在此處找到從HTML表單到CGI處理的整個過程的完整示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.