回形针:以压缩格式下载所有文件

时间:2014-04-07 08:46:54

标签: ruby-on-rails ruby zip paperclip

在rails 3.2.13中,我使用paperclip gem进行文件上传。我希望所有附件都能在压缩文件夹中下载。

我在宝石下面使用

rubyzip (1.1.3)

如果我使用下面的代码,会收到类似"未初始化的常量Zip :: ZipFile"

的错误
@assets = Assets::Resume.all

tmp_filename = "#{Rails.root}/tmp/tmp_zip_" <<
  Time.now.strftime("%Y%m%d%H%M%S").to_s <<
  ".zip"
Zip::ZipFile.open(tmp_filename, Zip::ZipFile::CREATE) do |zip|
  @assets.each do |e|
    zip.add("#{e.document.original_filename}", e.document.url)
  end
end

send_data(File.open(tmp_filename).read, :type => 'application/zip', :disposition => 'attachment', :filename =>"#{current_user.id}_cvs.zip")
File.delete tmp_filename

为了解决这个问题,我修改了下面提到的代码。在这个修改之后,我得到一个带有空数据(没有文件)的.zip文件。

@assets = Assets::Resume.all

tmp_filename = "#{Rails.root}/tmp/tmp_zip_" <<
  Time.now.strftime("%Y%m%d%H%M%S").to_s <<
  ".zip"
Zip::File.open(tmp_filename, Zip::File::CREATE) do |zip|
  @assets.each do |e|
    zip.add("#{e.document.original_filename}", e.document.url)
  end
end

send_data(File.open(tmp_filename).read, :type => 'application/zip', :disposition => 'attachment', :filename =>"#{current_user.id}_cvs.zip")
File.delete tmp_filename

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

尝试e.document.path而不是e.document.url。