【问题标题】:Rails 3: How do I generate a compressed file on requestRails 3:如何根据请求生成压缩文件
【发布时间】:2011-02-17 14:58:51
【问题描述】:

如何根据要求生成压缩文件。

我有这个控制器

def create    
    send_data generate_tgz("#{RAILS_ROOT}/tmp/example.txt"), :filename => 'export.tgz'    
end

但它给了我一个在 generate_tgz 上找不到的方法。

它是插件还是 gem?我需要什么吗?我可以生成一个 zip 文件吗?

编辑:

def generate_tgz(file)
    system("tar -czf #{RAILS_ROOT}/tmp/export-result #{RAILS_ROOT}/tmp/export")
    content = File.read("#{RAILS_ROOT}/tmp/export-result")
    #ActiveSupport::Gzip.compress(content)    
end

这会创建一个 tgz,但是当我解压缩它时,我会得到 app/c3ec2057-7d3a-40d9-9a9d-d5c3fe3ffd6f/home/tmp/export/and_the_files

我希望它只是:export/the_files

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

该方法不存在。您可以使用ActiveSupport::Gzip 轻松创建它。

def generate_tgz(file)
  content = File.read(file)
  ActiveSupport::Gzip.compress(content)
end

【讨论】:

  • 不错!我唯一需要改变的是:filename => 'export.tgz' 到 :filename => 'export.zip'。以及如何将多个文件捆绑为一个?
  • 要一次捆绑多个文件,您需要创建一个存档。 Rails 默认不支持这个。
  • 我设法使用 shell 调用来制作存档。现在它运行良好,只是它创建了一个相当不友好的目录层次结构。检查编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-24
  • 2011-05-02
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多