5

多数の画像を含む zip ファイルを Rails アプリケーションにアップロードできるようにしたいと考えています。次に、Rails でそのファイルを解凍し、内部の画像をPaperclip経由で Photo のモデルに添付して、最終的に Amazon S3 アカウント (Paperclip 経由で構成) に保存されるようにします。

Herokuでホストされている Rails サイトでこれをすべてやりたいのですが、残念ながら (私が知る限り) どんな種類のローカル ストレージでも、Paperclip の解析前に一時的に解凍することはできません。

どうすればこれを行うことができますか??

4

3 に答える 3

5

Heroku を完全にバイパスする S3 に直接アップロードすることをお勧めします。これにより、Heroku が強制する 30 秒のリクエスト タイムアウト (その時間が経過するとアップロードがドロップされます) や 1 GB の/tmpディレクトリ制限に制限されなくなります。ファイルがアップロードされたら、ファイルの名前と場所を使用して Rails アプリに POST を送信し、解凍操作を実行できます。後処理に Paperclip を使用する場合は、以下のリンクを添付します。Rails サーバーから作業をオフロードする S3 に直接アップロードするルートにたどり着いた場合は、私のサンプル プロジェクトをチェックしてください。

Rails 3、Flash、および MooTools ベースの FancyUploader を使用して S3 に直接アップロードするサンプル プロジェクト: https://github.com/iwasrobbed/Rails3-S3-Uploader-FancyUploader

Rails 3、Flash/Silverlight/GoogleGears/BrowserPlus、および jQuery ベースの Plupload を使用して S3 に直接アップロードするサンプル プロジェクト: https://github.com/iwasrobbed/Rails3-S3-Uploader-Plupload

画像のような例のペーパークリップ後処理のリンクは次のとおりです。

http://www.railstoolkit.com/posts/fancyupload-amazon-s3-uploader-with-paperclip

于 2011-05-27T16:32:06.463 に答える
3

rails_root/tmp については dmagkic が正しいです。次のようなものをお勧めします。

  • heroku から S3 にファイルをアップロードする
  • ファイルを圧縮するバックグラウンド ジョブをセットアップします (グループ化する必要があるファイル名を保存します)。
  • S3 からファイルをダウンロードし、圧縮し、zip を S3 に送信し、解凍されたファイルを削除する BJ を実行します。

そうすれば、アップロード プロセス中もアプリケーションの応答性が維持されます。

複数のファイルをアップロードしようとする場合は、/tmp に書き込むことができますが、すべてのファイルが同じポスト リクエストに含まれていることを確認してください。

于 2010-08-09T15:18:51.333 に答える
1

Heroku は への書き込みを許可し#{RAILS_ROOT}/tmpます。

ただし、ファイルはリクエストが続く間だけ存在することに注意する必要があります。おそらくもっと長くなりますが、それは保証されません。解凍して S3 に送信している間、リクエストをブロックしようとすることもできますが、かかる時間に注意する必要があります。

Heroku なしで、解凍して S3 に送信できるフラッシュ アップローダーが必要なようです。

于 2010-08-09T15:10:31.180 に答える