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を使って画像を保存するAPIサンプル

Ruby 2.1.4, Rails 4.1.7 で確認 画像アップロード機能を作成する際に carrierwaveをよく使うのですが毎回調べているので基本的な設定部分のメモを残しておきます。

[Rails]carrierwaveのcallbackをskip

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

[rails]carrierwaveを使った画像投稿APIをRspecでテストしてみる

rails 4.1.7, rspec 3.1.7 で確認 先日、