用于下载的Ruby(非rails)CGI脚本输出文件

时间:2011-05-04 02:42:57

标签: ruby cgi attachment

我正在尝试使用脚本输出zip文件以供下载。

脚本基本上是:

#!/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 个答案:

答案 0 :(得分:2)

听起来你想要CGI上的header方法:

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

答案 1 :(得分:0)

我相信你想要:

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

请参阅CGI#out的文档。