使用rubyzip打开multipart / form-data ZIP文件

时间:2009-06-04 15:59:50

标签: ruby-on-rails ruby rubyzip

我想在上传到我的Rails应用程序的ZIP文件中提取文件。 ZIP文件中的文件将存储在数据库中。

我想在我的操作中打开ZIP文件,而不必先将文件保存到文件夹 - 我想用rubyzip打开multipart / form-data流。

看起来像rubyzip的ZipFile.open只接受文件名 - 而不是IO流。

我需要在rubyzip中更改什么,允许我以流的形式打开zip文件,如下所示:

Zip::ZipFile.open(params["zip_file"]) do |zip_file|
 ...
end

感谢。 约尔格

2 个答案:

答案 0 :(得分:4)

我打算给你一些你没有要求的建议。

我强烈建议您不要在操作中执行此操作,因为只要执行提取,它就会阻止与该HTTP请求关联的Rails进程。您的用户界面将无响应,如果有足够多的用户同时执行此操作(您正在限制文件上传大小,对吗?)那么您实际上已经针对您的应用程序进行了Denial of Service攻击。

  • 从您的操作中启动提取作为异步后台作业。

答案 1 :(得分:4)

使用

Zip::ZipFile.open(params["zip_file"].path) do |zip_file|
 ...
end

应该有用。