我正在重新設計一個網站,根據用戶選擇的選項,我需要從數據庫中獲取數據,然後以可下載的格式將其提供給用戶。我將數據讀取到字符串變量中,但我不想將其寫入文件,然後編寫下載代碼。我想將字符串下載到客戶端的文件中。我正在使用perl。如何將字符串下載爲.csv文件,而不將字符串寫入文件並從文件讀取?
以前我是閱讀和使用本的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內容類型,然後在中間,我打開這個「內容類型:文本/純\ n」 - 這是哪裏瀏覽器會感到困惑。現在,有人可以告訴我如何關閉以前的HTML內容類型並打開這個新的內容類型下載?
因此,您更改了Content-Type,現在瀏覽器的行爲有所不同?你試過把它改回來嗎? –
不應該是'text/csv'嗎? –