Make hack for file streaming work with rails 3.1.0
This commit is contained in:
parent
8d520578a1
commit
c0fe77fd02
1 changed files with 5 additions and 17 deletions
|
@ -1,28 +1,16 @@
|
|||
# Hack ActionController::Streaming to allow streaming from a file handle
|
||||
# Hack ActionController::DataStreaming to allow streaming from a file handle
|
||||
module ActionController
|
||||
module Streaming
|
||||
module DataStreaming
|
||||
alias_method :old_send_file, :send_file
|
||||
|
||||
def send_file(file, options = {})
|
||||
if file.is_a? File or file.is_a? Tempfile
|
||||
options[:length] ||= file.stat.size
|
||||
options[:filename] ||= File.basename(file.path) unless options[:url_based_filename]
|
||||
send_file_headers! options
|
||||
|
||||
@performed_render = false
|
||||
|
||||
if options[:stream]
|
||||
render :status => options[:status], :text => Proc.new { |response, output|
|
||||
logger.info "Streaming file #{file.path}" unless logger.nil?
|
||||
len = options[:buffer_size] || 4096
|
||||
while buf = file.read(len)
|
||||
output.write(buf)
|
||||
end
|
||||
}
|
||||
else
|
||||
logger.info "Sending file #{file.path}" unless logger.nil?
|
||||
render :status => options[:status], :text => file.read
|
||||
end
|
||||
self.status = options[:status] || 200
|
||||
self.content_type = options[:content_type] if options.key?(:content_type)
|
||||
self.response_body = file
|
||||
else
|
||||
old_send_file(file, options)
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue