Module: CarrierWave::MimeTypes
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/carrierwave/processing/mime_types.rb
Overview
This module simplifies the use of the mime-types gem to intelligently guess and set the content-type of a file. If you want to use this, you’ll need to require this file:
require 'carrierwave/processing/mime_types'
And then include it in your uploader:
class MyUploader < CarrierWave::Uploader::Base
include CarrierWave::MimeTypes
end
You can now use the provided helper:
class MyUploader < CarrierWave::Uploader::Base
include CarrierWave::MimeTypes
process :set_content_type
end
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- GENERIC_CONTENT_TYPES =
%w[application/octet-stream binary/octet-stream]
Instance Method Summary collapse
- #generic_content_type? ⇒ Boolean
-
#set_content_type(override = false) ⇒ Object
Changes the file content_type using the mime-types gem.
Instance Method Details
#generic_content_type? ⇒ Boolean
47 48 49 |
# File 'lib/carrierwave/processing/mime_types.rb', line 47 def generic_content_type? GENERIC_CONTENT_TYPES.include? file.content_type end |
#set_content_type(override = false) ⇒ Object
Changes the file content_type using the mime-types gem
Parameters
- override (Boolean)
-
whether or not to override the file’s content_type if it is already set and not a generic content-type, false by default
60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/carrierwave/processing/mime_types.rb', line 60 def set_content_type(override=false) if override || file.content_type.blank? || generic_content_type? new_content_type = ::MIME::Types.type_for(file.original_filename).first.to_s if file.respond_to?(:content_type=) file.content_type = new_content_type else file.instance_variable_set(:@content_type, new_content_type) end end rescue ::MIME::InvalidContentType => e raise CarrierWave::ProcessingError, I18n.translate(:"errors.messages.mime_types_processing_error", :e => e) end |