如何在HTML中创建一个CGI,单击该CGI可以运行系统调用并下载数据

如何在HTML中创建一个CGI,单击该CGI可以运行系统调用并下载数据,html,perl,cgi,Html,Perl,Cgi,我希望有一个URL,只有在单击时才会执行CGI <a href=/myweb/cgi-bin/mycgi_long_running.cgi?name=param>Some Param</a> 我已经很久没有这样做了,但是试着摆弄一下这样的东西: print qq{Content-Disposition: attachment; filename="$outf"\r\n}; print qq{Content-Type: application/octet-stream;

我希望有一个URL,只有在单击时才会执行CGI

<a href=/myweb/cgi-bin/mycgi_long_running.cgi?name=param>Some Param</a>

我已经很久没有这样做了,但是试着摆弄一下这样的东西:

print qq{Content-Disposition: attachment; filename="$outf"\r\n};
print qq{Content-Type: application/octet-stream; name="$outf"\r\n};

open(my $fh, "<", $outf);
my $buf;

while(read($fh, $buf, 100)) {
    print $buf;
}
print qq{内容处置:附件;filename=“$outp”\r\n};
打印qq{Content Type:application/octet stream;name=“$outp”\r\n};

open(my$fh,“如果tar文件是在web服务器的文档根目录中创建的,则不需要通过Perl打开并流式传输它,这可以提高性能。只需在CGI处理完成后发送重定向即可


根据CGI过程所需的时间,浏览器可能会因超时而决定关闭连接。您可能希望主页成为一个进度页,使用JavaScript更新一个奇特的进度条,并使用最后一点JavaScript将用户转发到其实际文件下载。

$param_searchkey
$searchkey
应该是相同的标量?您是否在任何地方声明了
$file
?我建议您在脚本中添加
使用strict;使用warnings;
。想想当我向您发送类似“邮件邪恶”的请求时会发生什么_hacker@example.orgprint qq{Content-Disposition: attachment; filename="$outf"\r\n}; print qq{Content-Type: application/octet-stream; name="$outf"\r\n}; open(my $fh, "<", $outf); my $buf; while(read($fh, $buf, 100)) { print $buf; }