module ActiveStorage::Streaming

Included modules:
ActionController::DataStreaming, ActionController::Live

Constants

DEFAULT_BLOB_STREAMING_DISPOSITION

Private Instance Methods

send_blob_stream(blob, disposition: nil) Show source
# File activestorage/app/controllers/concerns/active_storage/streaming.rb, line 56
def send_blob_stream(blob, disposition: nil) # :doc:
  send_stream(
      filename: blob.filename.sanitized,
      disposition: blob.forced_disposition_for_serving || disposition || DEFAULT_BLOB_STREAMING_DISPOSITION,
      type: blob.content_type_for_serving) do |stream|
    blob.download do |chunk|
      stream.write chunk
    end
  rescue ActiveStorage::FileNotFoundError
    expires_now
    head :not_found
  rescue
    # Status and caching headers are already set, but not committed.
    # Change the status to 500 manually.
    expires_now
    head :internal_server_error
    raise
  end
end

Stream the blob from storage directly to the response. The disposition can be controlled by setting disposition. The content type and filename is set directly from the blob.

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.