LoginSignup
4
6

More than 5 years have passed since last update.

CarrierWaveでcontent-typeの設定を行う

Last updated at Posted at 2013-08-19

CarrierWaveを使って画像のアップロードを行うAPIを作成した際に、アプリ側からアップロードされた画像のcontent-typeが"image/jpeg"ではなく、"application/octet-stream"となっており、管理画面で画像を表示しようとすると画像ダウンロードになってしまう現象が発生したので、CarrierWaveで適切なcontent-typeの設定を行うようにしました。

uploaderに以下を追加

app/uploaders/resource_uploader.rb

require 'carrierwave/processing/mime_types'

class ResourceUploader < CarrierWave::Uploader::Base
  include CarrierWave::MimeTypes
  process :set_content_type

  ...
end

ドキュメントに書いてある内容そのままですが、これで正しくcontent-typeが認識されるようになりました。

また"application/octet-stream"以外の不正確なcontent-typeの場合(例えばIEはCSVを"application/vnd.ms-excel"で送ります)、下記のように記述することによってmime-types gemによる拡張子の判定を行い、設定することが出来ます。

app/uploaders/resource_uploader.rb

require 'carrierwave/processing/mime_types'

class ResourceUploader < CarrierWave::Uploader::Base
  include CarrierWave::MimeTypes
  process set_content_type: true # 変更箇所

  ...
end

参考

4
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6