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


[まとめ] 現在開催中のKindleセール情報はこちら

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

  def extension_white_list
    %w(jpg jpeg gif png)
  end

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

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

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

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

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

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

[まとめ] 現在開催中のKindleセール情報はこちら