4

Carrierwave のアップロード キャッシング機能はどのように機能しますか? 私が読んだpublic/uploads/tmpことから、フォームの再表示間での再アップロードを避けるために、アップロードされたファイルを保持しているようです。キャッシュには一意の ID が割り当てられると推測していますが、それでもパブリックにアクセスできます。機密性の高いアップロードの安全性を高める方法、またはこの機能を完全に無効にする方法は?

これを回避する 1 つの方法は、アップローダーをターゲット モデルとは別のモデルとして使用することです。これにより、検証エラーが発生しても再アップロードする必要がなくなります。

4

1 に答える 1

8

CarrierWave はアップロードされた画像をキャッシュ ディレクトリに保持するため、ユーザーに画像の再アップロードを強制することなく、検証エラーが発生した場合にフォームを簡単に再送信できます。デフォルトのキャッシュディレクトリは ですが、構成パラメーターpublic/uploads/tmpを設定することで変更できます。cache_dir

通常、アップロードされた画像は認証なしでダウンロードできます。したがって、アップロードおよびキャッシュされたファイルをパブリック ディレクトリに配置しても問題ありません。アップローダ クラスを変更してfilename、一意のランダム ID を生成し、推測しにくくするメソッドを含めることもできます。

ちなみに、このブログ投稿では、画像をクラウドに保存して変換し、CDN を介して配信しながら、CarrierWave を統合する方法について説明しています。

于 2012-04-23T13:55:04.657 に答える