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