2009-06-04 67 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