当我使用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()
发布于 2015-02-20 11:05:04
你想从错误的地方读出来。在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。它更干净,更安全,更清晰。有关解释,请参见现代Perl。
从HTML到CGI处理的整个过程的完整示例可以找到这里。
https://stackoverflow.com/questions/28625961
复制相似问题