我正在寻找一种方法,在我的Rails应用程序中,通过一个请求创建多个CSV文件并将它们作为一个zip压缩包下载。
为了创建这个压缩包,我使用了rubyzip gem - 为了下载它,我只需要使用Rails内置的send_data函数。但是我的问题是,rubyzip的add-function需要一个路径名来加载文件。但是,由于我的CSV文件是在同一个请求中创建的,因此没有路径可用。
一些代码:
# controller action to download zip
def download_zip
zip = @company.download_all
send_data zip, filename: "abc.zip", type: 'application/zip'
end
# method to create zip
def download_all
Zip::File.open('def.zip', Zip::File::CREATE) do |zipfile|
self.users.each do |user|
#some magic to combine zipfile.add() and user.to_csv
end
end
end
# method to create csv
def to_csv
CSV.generate do |csv|
#build awesome csv
end
end
有没有一种方法可以将我的CSV文件临时保存在某个目录中,以便我可以将路径名传递给zipfile.add()函数?
祝大家周末愉快,编码愉快!
send_data zip, filename: "abc.zip", type: 'application/zip'
- 如果该类型存在,许多浏览器/操作系统将只正确处理该文件。 - Jonas Witt