2009-06-04 68 views
3

我想提取ZIP文件中的文件,我上传到我的Rails应用程序。 ZIP文件中的文件将被存储在数据库中。用rubyzip打开multipart/form-data ZIP文件

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

它看起来像rubyzip的ZipFile.open只需要一个文件名 - 而不是IO流。

什么我需要rubyzip内改变,让我打开zip文件作为流,就像这样:

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

感谢。 Joerg

回答

4

使用

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

应该工作。

4

我会给你一些建议,你没有要求。

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

  • 从您的操作中开始提取为异步后台作业。
+1

是的,我通常是异步执行它,但在这种情况下,不允许先保存文件。这是一个只有少数人可以访问的内部系统。谢谢,不过。 – Joerg 2009-06-04 17:15:40