module ActionController::DataStreaming

def send_file_headers!(options)

def send_file_headers!(options)
  type_provided = options.has_key?(:type)
  content_type = options.fetch(:type, DEFAULT_SEND_FILE_TYPE)
  self.content_type = content_type
  response.sending_file = true
  raise ArgumentError, ":type option required" if content_type.nil?
  if content_type.is_a?(Symbol)
    extension = Mime[content_type]
    raise ArgumentError, "Unknown MIME type #{options[:type]}" unless extension
    self.content_type = extension
  else
    if !type_provided && options[:filename]
      # If type wasn't provided, try guessing from file extension.
      content_type = Mime::Type.lookup_by_extension(File.extname(options[:filename]).downcase.delete(".")) || content_type
    end
    self.content_type = content_type
  end
  disposition = options.fetch(:disposition, DEFAULT_SEND_FILE_DISPOSITION)
  if disposition
    headers["Content-Disposition"] = ActionDispatch::Http::ContentDisposition.format(disposition: disposition, filename: options[:filename])
  end
  headers["Content-Transfer-Encoding"] = "binary"
end