Sha256: 1120c25f5f5dc21a660bd7756f389ef58b9699091059c386092d68ab1269c10c
Contents?: true
Size: 1.06 KB
Versions: 2
Compression:
Stored size: 1.06 KB
Contents
module CarrierWave module Downloader class RemoteFile attr_reader :file def initialize(file) @file = file.is_a?(String) ? StringIO.new(file) : file end def original_filename filename = filename_from_header || filename_from_uri mime_type = MiniMime.lookup_by_content_type(file.content_type) unless File.extname(filename).present? || mime_type.blank? filename = "#{filename}.#{mime_type.extension}" end filename end def respond_to?(*args) super || file.respond_to?(*args) end private def filename_from_header return nil unless file.meta.include? 'content-disposition' match = file.meta['content-disposition'].match(/filename=(?:"([^"]+)"|([^";]+))/) return nil unless match match[1].presence || match[2].presence end def filename_from_uri CGI.unescape(File.basename(file.base_uri.path)) end def method_missing(*args, &block) file.send(*args, &block) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
carrierwave-2.1.0 | lib/carrierwave/downloader/remote_file.rb |
carrierwave-2.0.2 | lib/carrierwave/downloader/remote_file.rb |