3

Rails アプリにアップロードした ZIP ファイル内のファイルを抽出したいと考えています。ZIP ファイル内のファイルはデータベースに保存されます。

最初にファイルをフォルダーに保存することなく、自分のアクションで ZIP ファイルを開きたい - ruby​​zip で multipart/form-data ストリームを開きたい。

rubyzip の ZipFile.open は、IO ストリームではなく、ファイル名のみを受け取るようです。

次のように、zip ファイルをストリームとして開くことができるようにするには、rubyzip 内で何を変更する必要がありますか?

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 に答える