[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
分かればなるほどたしかにと思うのですが、気づくまでに時間がかかってしまいました。