gpt4 book ai didi

ruby-on-rails - 使用 Tempfile 在 rails 中创建一个 zip 文件

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:00 25 4
gpt4 key购买 nike

我想在 rails 中创建一个临时的 .zip。为了创建 zip 文件,我使用了 rubyzip gem。

目前我正在这样做:

zfname = Tempfile.new(['somename','.zip'], Rails.root.to_s + '/tmp/')
Zip::ZipFile.open(zfname.path, Zip::ZipFile::CREATE) do |zipfile|
zipfile.add(file, basepath + file)
end

这会产生以下错误:

Zip::ZipError: Zip end of central directory signature not found

是否可以将 Tempfile 用于 zip?如果是,这里有什么问题?

最佳答案

在我的 Rails 应用程序中,当我需要向用户发送 zip 文件时,我只是将它们存储在缓冲区中并在 Controller 中使用“发送数据”方法。我最初尝试使用“Tempfile”,但它有一个额外的任务,即在将 zip 文件发送给用户后删除它,这很痛苦。这是您要找的东西吗?

    Zip::OutputStream.write_buffer do |stream|
file_paths.each_with_index do |file_path, index|
# rename the pdf
stream.put_next_entry("#{name}-#{index + 1}.pdf")
# add pdf to zip
stream.write IO.read(file_path)
end
end

关于ruby-on-rails - 使用 Tempfile 在 rails 中创建一个 zip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com