Ruby(非 Rails)CGI 脚本输出文件可供下载

发布于 2024-11-05 06:03:09 字数 546 浏览 1 评论 0原文

我正在尝试获取一个脚本来输出 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 的内容配置?

I'm trying to get a script to output a zip file for download.

The script is basically:

#!/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

I can't see anywhere I can set the downloaded file's name on the requesting computer. It always seems to get saved as "scriptname.cgi". Where can I set the content disposition with CGI?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南街九尾狐 2024-11-12 06:03:09

听起来您想要 标头方法:

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

Sounds like you want the header method on CGI:

cgi = CGI.new
cgi.header('Content-Disposition' => 'attachment;filename=AZipFile.zip')
cgi.out 'application/zip' do
    new_zip
end
涙—继续流 2024-11-12 06:03:09

我相信您想要:

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

请参阅 CGI 的文档#out

I believe you want:

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

See the documentation for CGI#out.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文