module ActionController::Streaming

def send_file_headers!(options)

def send_file_headers!(options)
  options.update(DEFAULT_SEND_FILE_OPTIONS.merge(options))
  [:type, :disposition].each do |arg|
    raise ArgumentError, ":#{arg} option required" if options[arg].nil?
  end
  if options.key?(:length)
    ActiveSupport::Deprecation.warn("You do not need to provide the file's length", caller)
  end
  disposition = options[:disposition]
  disposition += %(; filename="#{options[:filename]}") if options[:filename]
  content_type = options[:type]
  if content_type.is_a?(Symbol)
    extension = Mime[content_type]
    raise ArgumentError, "Unknown MIME type #{options[:type]}" unless extension
    self.content_type = extension
  else
    self.content_type = content_type
  end
  headers.merge!(
    'Content-Disposition'       => disposition,
    'Content-Transfer-Encoding' => 'binary'
  )
  response.sending_file = true
  # Fix a problem with IE 6.0 on opening downloaded files:
  # If Cache-Control: no-cache is set (which Rails does by default),
  # IE removes the file it just downloaded from its cache immediately
  # after it displays the "open/save" dialog, which means that if you
  # hit "open" the file isn't there anymore when the application that
  # is called for handling the download is run, so let's workaround that
  response.cache_control[:public] ||= false
end