private Method

Streaming.send_file_headers!(options)

There's no documentation for this item.

Source Code

# File action_controller/streaming.rb, line 123
def send_file_headers!(options)
  options.update(DEFAULT_SEND_FILE_OPTIONS.merge(options))
  [:length, :type, :disposition].each do |arg|
    raise ArgumentError, ":#{arg} option required" if options[arg].nil?
  end

  disposition = options[:disposition].dup || 'attachment'

  disposition <<= %(; filename="#{options[:filename]}") if options[:filename]

  headers.update(
    'Content-Length'            => options[:length],
    'Content-Type'              => options[:type].to_s.strip,  # fixes a problem with extra '\r' with some browsers
    'Content-Disposition'       => disposition,
    'Content-Transfer-Encoding' => 'binary'
  )

  # 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
  headers['Cache-Control'] = 'private' if headers['Cache-Control'] == 'no-cache'
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.