【问题标题】:Opening a multipart/form-data ZIP file with rubyzip使用 ruby​​zip 打开 multipart/form-data ZIP 文件
【发布时间】:2009-06-04 15:59:49
【问题描述】:

我想提取我上传到我的 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

谢谢。 约尔格

【问题讨论】:

    标签: ruby-on-rails ruby rubyzip


    【解决方案1】:

    使用

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

    应该可以。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 是的,我通常异步执行此操作,但在这种特殊情况下,不允许先保存文件。这是一个内部系统,只有少数人可以访问它。不过,谢谢。
      猜你喜欢
      • 2013-08-15
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      相关资源
      最近更新 更多