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

谢谢。约尔格

有帮助吗?

解决方案

使用

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

应该工作。

其他提示

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

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

  • 从您的操作中将提取作为异步后台作业启动。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top