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

标签 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 设置内容处置?

最佳答案

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

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

关于Ruby(非 rails)CGI 脚本输出文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5877896/

相关文章:

ruby-on-rails - ruby-on-rails4+mongoid+carrierwave+fog+jquery-file-upload-TypeError(没有将 nil 隐式转换为 String)

perl - 使用 Perl 轻松比较两个数组

java - 无法使用正则表达式在 Talend Open Studio 中过滤文件名

php - 从 Mailgun 表单 Post PHP 中检索附件

ssl - 通过 SSL 的 IE8 附件下载问题

ruby-on-rails - 如何在 Rails 中使用 becomes

ruby-on-rails - 无法通过 Homebrew 启动 elasticsearch 服务器

Ruby 数组减法,无需多次删除项目

c++ - CGI 程序的自定义输出缓冲区,运算符重载

python - 通过 CGI 在 cPanel 上部署 Python 应用程序 - SuExec 和 500 错误