    # File lib/merb-core/controller/mixins/controller.rb, line 252
        def stream_file(opts={}, &stream)
          opts.update(Merb::Const::DEFAULT_SEND_FILE_OPTIONS.merge(opts))
          disposition = opts[:disposition].dup || 'attachment'
          disposition << %(; filename="#{opts[:filename]}")
          headers.update(
            'Content-Type'              => opts[:type].strip,  # fixes a problem with extra '\r' with some browsers
            'Content-Disposition'       => disposition,
            'Content-Transfer-Encoding' => 'binary',
            # Rack specification requires header values to respond to :each
            'CONTENT-LENGTH'            => opts[:content_length].to_s
          )
          Proc.new do |response|
            stream.call(response)
          end
        end