执行CGI脚本时出现软件错误

时间:2013-10-17 18:47:20

标签: html perl upload cgi

我有一个上传的cgi脚本,如下所示

#!/usr/bin/perl
use CGI;
use CGI::Carp qw(fatalsToBrowser);

my $cgi = new CGI;
my $file = $cgi->param('file');
$file=~m/^.*(\\|\/)(.*)/; # strip the remote path and keep the filename
my $name = $2;
open(LOCAL, ">/home/Desktop/$name") or die $!;

while(<$file>) {
  $data .= $_;
}
print $cgi->header();
print "$file has been successfully uploaded... thank you.\n";
    print $data;

HTML文件如下

<html>
<head>
    <title>Test</title>
</head>

<body>
    <form enctype="multipart/form-data" action="upload.cgi" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
            Send this file: <input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>
</body>
</html>

我现在得到一个奇怪的错误..

软件错误:

是htdocs / upload.cgi第9行的目录。

如需帮助,请发送邮件至本网站的网站管理员,提供此错误消息以及错误的时间和日期。

1 个答案:

答案 0 :(得分:0)

一些建议可能会让您更接近解决方案。

  • use strictuse warnings(始终使用这些)。
  • CGI->new()而不是new CGI(不是必需的,但是很容易进入)。
  • 您的文件上传表单输入称为“userfile”,但在您的CGI代码中,您将其称为“文件”。这种不一致性需要修复。
  • 你得到$cgi->param('file')的文件名,它可以正确地获取文件名(好吧,一旦你修复了我之前的错误),但你后来尝试将该文件名视为文件句柄({ {1}})。那不行。
  • 您应该阅读使用CGI.pm。
  • how to process a file upload field文档
相关问题