需要一些可以从服务器计算机下载文件的 cgi-perl 脚本。 EX:单击下载链接,它将打开“另存为” 窗口并允许我将文件保存在本地计算机上。
我已经使用 CGI 创建了一个网页,使用它我将上传一个文件到服务器,并运行一个 perl 脚本将其转换为其他格式(直到这里我完成了)。现在我需要将此文件返回(下载回)到系统。
#!/usr/bin/perl
#print "Content-type: text/html\n\n";
my $filepath='/upload/testing.pm';
print "Content-Type: text/html\n\n";
open("DOWNLOADFILE", "<".$filePath);
while($fileContents = <DOWNLOADFILE>) {
print $fileContents;
}
print "Content-Type: text\n";
print "Content-Disposition: attachment; filename='testing.pm'\n";
print "Content-Description: File to download\n\n";
close DOWNLOADFILE;
将文件从我的机器(客户端)上传到服务器机器,其中我有一个 perl 脚本,它将文件转换为另一种格式,并将新转换的文件保存到目录 ex:/upload-> 直到我在这里完成脚本编写。
现在我需要使用浏览器将此文件下载回客户端计算机。在本例中,我尝试将testing.pm 文件下载回客户端计算机。
最佳答案
我认为您刚刚将内容处置 header 拼写错误。应该是“附件”,而不是“附件”。
更新(以下评论):
好吧,进一步观察,我发现您正在打印一个 CGI header (内容类型:text/html),后跟两个换行符,然后打印更多 CGI header 并期望浏览器注意到它们。响应中的第一个空行将告诉浏览器 header 已完成。因此,您的第二批标题将仅被视为内容。
我还看到您在第二组 header 之前打印文件的内容。这将使它们成为页脚而不是页眉:-)
您需要重新排序代码,以便仅返回一组 header 。然后返回数据。
关于Perl CGI 通过网络浏览器下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15294815/