3

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

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

看起来 ruby​​zip 的 ZipFile.open 只需要一个文件名——而不是一个 IO 流。

我需要在 ruby​​zip 中进行哪些更改,以允许我将 zip 文件作为流打开,如下所示:

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

谢谢。约尔格

4

2 回答 2

4

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

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

  • 从您的操作中将提取作为异步后台作业启动。
于 2009-06-04T16:11:58.320 回答
4

使用

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

应该管用。

于 2009-11-05T22:36:21.327 回答