--- !ruby/object:RI::MethodDescription 
aliases: []

block_params: 
comment: 
- !ruby/struct:SM::Flow::P 
  body: Sends the file by streaming it 4096 bytes at a time. This way the whole file doesn't need to be read into memory at once. This makes it feasible to send even large files.
- !ruby/struct:SM::Flow::P 
  body: Be careful to sanitize the path parameter if it coming from a web page. send_file(params[:path]) allows a malicious user to download any file on your server.
- !ruby/struct:SM::Flow::P 
  body: "Options:"
- !ruby/object:SM::Flow::LIST 
  contents: 
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: <tt>:filename</tt> - suggests a filename for the browser to use. Defaults to File.basename(path).
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: <tt>:type</tt> - specifies an HTTP content type. Defaults to 'application/octet-stream'.
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: <tt>:disposition</tt> - specifies whether the file will be shown inline or downloaded. Valid values are 'inline' and 'attachment' (default).
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: <tt>:stream</tt> - whether to send the file to the user agent as it is read (true) or to read the entire file before sending (false). Defaults to true.
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: <tt>:buffer_size</tt> - specifies size (in bytes) of the buffer used to stream the file. Defaults to 4096.
  - !ruby/struct:SM::Flow::LI 
    label: "*"
    body: <tt>:status</tt> - specifies the status code to send with the response. Defaults to '200 OK'.
  type: :BULLET
- !ruby/struct:SM::Flow::P 
  body: The default Content-Type and Content-Disposition headers are set to download arbitrary binary files in as many browsers as possible. IE versions 4, 5, 5.5, and 6 are all known to have a variety of quirks (especially when downloading over SSL).
- !ruby/struct:SM::Flow::P 
  body: "Simple download:"
- !ruby/struct:SM::Flow::VERB 
  body: "  send_file '/path/to.zip'\n"
- !ruby/struct:SM::Flow::P 
  body: "Show a JPEG in the browser:"
- !ruby/struct:SM::Flow::VERB 
  body: "  send_file '/path/to.jpeg', :type =&gt; 'image/jpeg', :disposition =&gt; 'inline'\n"
- !ruby/struct:SM::Flow::P 
  body: "Show a 404 page in the browser:"
- !ruby/struct:SM::Flow::VERB 
  body: "  send_file '/path/to/404.html, :type =&gt; 'text/html; charset=utf-8', :status =&gt; 404\n"
- !ruby/struct:SM::Flow::P 
  body: Read about the other Content-* HTTP headers if you'd like to provide the user with more information (such as Content-Description). http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
- !ruby/struct:SM::Flow::P 
  body: Also be aware that the document may be cached by proxies and browsers. The Pragma and Cache-Control headers declare how the file may be cached by intermediaries. They default to require clients to validate with the server before releasing cached responses. See http://www.mnot.net/cache_docs/ for an overview of web caching and http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 for the Cache-Control header spec.
full_name: ActionController::Streaming#send_file
is_singleton: false
name: send_file
params: (path, options = {})
visibility: protected
