23 lines
735 B
Ruby
23 lines
735 B
Ruby
# Hack ActionController::DataStreaming to allow streaming from a file handle
|
|
module ActionController
|
|
module DataStreaming
|
|
alias_method :old_send_file, :send_file
|
|
|
|
def send_file(file, options = {})
|
|
if file.is_a? File or file.is_a? Tempfile
|
|
headers["Content-Length"] ||= file.size.to_s
|
|
|
|
options[:filename] ||= File.basename(file.path) unless options[:url_based_filename]
|
|
send_file_headers! options
|
|
|
|
self.status = options[:status] || 200
|
|
self.content_type = options[:content_type] if options.key?(:content_type)
|
|
self.response_body = file
|
|
else
|
|
headers["Content-Length"] ||= File.size(file).to_s
|
|
|
|
old_send_file(file, options)
|
|
end
|
|
end
|
|
end
|
|
end
|