Perl CGI 通过网络浏览器下载文件

标签 perl apache web cgi

需要一些可以从服务器计算机下载文件的 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/

相关文章:

json - 一次从 Perl JSON 获取单个键值

php - PHP 无法识别 openssl_encrypt

linux - 在 Linux/Apache 上在后台运行 Cron 作业

javascript - 为什么变量 'name' 在第一次使用后不需要初始化 [Javascript]

javascript - 如何设置间隔、清除间隔、使用相同的 ID 重置间隔

perl - 如何在没有许可证和构建信息的情况下获取 Perl 版本字符串?

Perl Mongo 查找对象 ID

perl - 您如何阅读 CPAN 变更日志?

apache - 我可以安全地杀死大量的/usr/sbin/apache2 -k 启动 PID 吗?

python - Django 重复查询导致加载缓慢