2011-05-04 24 views
2

我想要獲得一個腳本來輸出一個zip文件供下載。下載的Ruby(不是rails)CGI腳本輸出文件

劇本基本上是:

#!/usr/bin/env ruby 
require 'rubygems' 
require 'active_support' 
require 'zip/zip' 
require 'cgi' 

temp_zip_filename = '/some/path/tmp/' + Time.new.usec.to_s 
new_zip = File.open(temp_zip_filename, 'rb'){|f| f.read} 

#header = "Content-Type: application/octet-stream" 
#header << ' Content-Disposition: attachement; filename="AZipFile.zip"' 

CGI.new.out 'application/zip' do 
    new_zip 
end 

我看不到任何地方,我可以請求的計算機上設置下載的文件的名稱。它似乎總是保存爲「scriptname.cgi」。我可以在哪裏設置CGI的內容處理?

回答

2

聽起來像是你想在CGI的header方法:

cgi = CGI.new 
cgi.header('Content-Disposition' => 'attachment;filename=AZipFile.zip') 
cgi.out 'application/zip' do 
    new_zip 
end 
0

我相信你想:

CGI.new.out(
    "Content-Type" => 'application/zip', 
    "content-disposition" => "attachment; filename=#{myfilename}" 
){ new_zip } 

查看文檔CGI#out