我正在重新设计一个网站,根据用户选择的选项,我需要从数据库中获取数据,然后以可下载的格式将其提供给用户。我正在将数据提取到字符串变量中,但我不想将其写入文件然后编写下载代码。我想将字符串下载到客户端的文件中。我为此使用 perl。
以前我使用这个 perl-cgi 代码从文件中读取和下载:
...
my $ID = "details.csv";
my @fileholder;
my $filesloc = "/html/details.csv";
open(DLFILE,'<',"$files_loc") || Error('open','file');
@fileholder = <DLFILE>;
close(DLFILE)
print "Content-Type:application/x-download\n";
print "Content-Disposition:attachment;filename=$ID\n\n";
print @fileholder;
保存为downloadscript.cgi。但是现在,我想在.pm文件中执行此操作,并且我将字符串值存储在 @fileholder 中。我试过:
my $ID = "details.txt";
my @fileholder = qw(name age address);
print "Content-Type:text/plain\n";
print "Content-Disposition:attachment;filename=$ID\n\n";
print @fileholder;
在 .pm 文件中,但它是在屏幕上打印上述行,而不是打开“另存为”对话框。两者都是perl,所以我哪里出错了?
编辑:我知道了原因,这是因为我之前打开了一个 html 内容类型,然后在中间,我打开了这个“Content-Type:text/plain\n”——这是浏览器感到困惑的地方。现在,有人可以告诉我如何关闭以前的 html 内容类型并打开这个新的内容类型进行下载吗?