使用 rubyzip 打开 multipart/form-data ZIP 文件
-
11-09-2019 - |
题
我想提取上传到 Rails 应用程序的 ZIP 文件中的文件。ZIP 文件中的文件将存储在数据库中。
我想在我的操作中打开 ZIP 文件,而不必先将文件保存到文件夹中 - 我想使用 rubyzip 打开 multipart/form-data 流。
看起来 rubyzip 的 ZipFile.open 只接受文件名 - 而不是 IO 流。
我需要在 rubyzip 中更改什么,才能允许我以流的形式打开 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 将变得无响应,如果有足够多的用户同时执行此操作(您正在限制文件上传大小,对吗?),那么您实际上就得到了一个 拒绝服务 针对您的应用程序的攻击。
- 从您的操作中将提取作为异步后台作业启动。
不隶属于 StackOverflow