【问题标题】:MIME Type Header not working. Browser Opening file insteadMIME 类型标头不起作用。浏览器打开文件
【发布时间】:2011-10-23 07:39:40
【问题描述】:

我正在运行一个 perl cgi 脚本,试图打开一个“另存为”对话框,让用户在他们的计算机上下载和保存特定文件。目前我的代码看起来像这样:

print "Content-Disposition: attachment; filename=$temp\n\n"; 
print "Content-Type: application/x-download\n"; 
print @fileStuff

我搜索了互联网,似乎 MIME 类型标头是正确的,但它们似乎不起作用。浏览器似乎正在打开文件并显示内容。这是有问题的,因为文件很大。我在 chrome 和 firefox 上得到了相同的结果。

谢谢!

编辑:

my $path = "/home/blabla/Desktop/";
my $temp = $fileList[3];
warn ($temp);
my @fileholder;
push (@fileholder, "<$path/$temp");

print "Content-Type:application/x-download\n"; 
print "Content-Disposition:attachment;filename=$temp\n\n";
print @fileholder

【问题讨论】:

    标签: perl firefox google-chrome cgi mime-types


    【解决方案1】:

    您的 Content-disposition 行中有两个 \n\n。第二个 \n 终止标题块并启动正文块,因此 Content-Type 标题实际上成为文档正文的一部分。请记住,在 HTTP 中,所有输出都是标头,直到遇到空行,然后正文才开始。

    交换两行的顺序,或将第二个 \n 移动到 Content-Type 行,看看会发生什么。

    【讨论】:

    • 感谢您的回复。我已经尝试了这两种方法,它仍然会打开文件。它打印 Content-Type 和 Content-Disposition 头。我很确定这不应该发生,我不确定为什么。
    • 在您到达这一点之前,脚本中是否还有其他输出?任何非标头类型的输出都将启动“正文”。
    • 马克,谢谢!令人尴尬的是,在此之前我打印了一些东西。
    猜你喜欢
    • 2012-03-09
    • 2020-01-24
    • 2014-03-09
    • 2015-10-22
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多