MIME类型标头不起作用。浏览器打开文件

时间:2011-08-09 14:58:40

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

我正在运行一个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

1 个答案:

答案 0 :(得分:2)

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

交换两行的顺序,或将第二行\n移至内容类型行,看看会发生什么。