hello-world
webエンジニアのメモ。とりあえずやってみる。

[rails][carrierwave]jsでカメラ画像を直接アップロードする場合のextension_white_list設定

公開日時

carrierwave を使うと、extension_white_listメソッドで拡張子によるアップロードファイルの制限をかけることができます。

def extension_white_list
  %w(jpg jpeg gif png)
end

デフォルトだと無効になっていますが、上記のようなサンプルコードがコメントアウトされた状態で記載されているはずです。

これで拡張子による制限をかけられるのですが、js経由で画像アップロードを行う場合に、あらかじめ保存してある画像だけでなく、その場でカメラを使って撮影、アップロードもできる、という機能を作っていて少しはまりました。

カメラから直接画像を送る場合はバイナリ形式でそのまま送られるので拡張子がありません。

そこで、ホワイトリストに拡張子なしを追加する必要がありました。

def extension_white_list
  ['jpg', 'jpeg', 'gif', 'png', '']
end

分かればなるほどたしかにと思うのですが、気づくまでに時間がかかってしまいました。


Related #carrierwave

[rails]carrierwaveで保存した画像のurlを取得する

carrierwave 0.10.0 で確認 imageカラムにcarrierwaveで保存した画像を保存している場合、デフォルトのままだとだとurlメソッドを実行してもpublic以下のパスのみで http://~ が設定されていません。

[rails]base64エンコードされた画像をcarrierwaveに保存する

Ruby 2.1.4, Rails 4.1.7 で確認 前回はcarrierwaveを使ってPOSTされた画像ファイルの保存を行うAPIを作ってみました。

[Rails]carrierwaveのcallbackをskip

Railsで画像アップロード機能を作る際に欠かせないgemと言えば carrierwave ですが、save時にcarrierwaveのcallbackをskipしたい場合の対応方法をメモしておきます。