CarrierWaveを使用してアップロードのサイズを検証します
-
13-10-2019 - |
質問
最新のアプリケーションでは、いくつかのアップロードを処理する必要があります。以前にPaperClipを使用していましたが、すべてが機能します。しかし、私たちは与えています キャリアウェーブ 試してみてください、それは有望に見えますが、私は見つけることができません 添付ファイルのサイズを検証する方法, 、それのようです ドキュメンテーション それについての情報はありませんが、カスタムバリーターを介してモデルに手動で追加する必要がありますか?
前もって感謝します!
解決
GithubにはWikiエントリがあります: https://github.com/jnicklas/carrierwave/wiki/how-to-3a-validate- attachment-file-size
他のヒント
アクティブモデルを作成しました ファイルバリエーター CarrierWave、PaperClip、Drangonfly、Refileのコンテンツタイプとファイルサイズの検証をチェックするGEM(他のアップロードソリューションで機能することを願っています)。ファイルのコンテンツに基づいてコンテンツタイプを検出し、メディアタイプのスプーフィング検出器を備えています。アップロード前後の両方で機能します。
以来 1.0
バージョンCarrierWaveには、ファイルサイズの検証が組み込まれています。
最新のインストール carrierwave
宝石
gem 'carrierwave', '~> 1.0'
メソッドを追加します size_range
最小サイズと最大サイズを提供します
class ImageUploader < CarrierWave::Uploader::Base
def size_range
0..2.megabytes
end
モデル追加 validates_integrity_of
画像のファイルサイズ(およびコンテンツタイプ)を有効にします。
class Image < ApplicationRecord
mount_uploader :image, ImageUploader
validates_integrity_of :image
これが解決策です 私が思いついたこと - トリックは、ファイルがアップロードされていなかった場合にFog Rubygem爆弾が作られたため、ファイルサイズを直接チェックできなかったことでした。ファイルがアップロードされているかどうかをCarrierWaveに尋ねるよりクリーンな方法があると思います。