lib/roda/plugins/sinatra_helpers.rb
# Set the Content-Disposition to "attachment" with the specified filename,
# instructing the user agents to prompt to save.
Set the Content-Disposition to "attachment" with the specified filename,
instructing the user agents to prompt to save.
Set the Content - Disposition to " attachment " with the specified filename instructing the user agents to prompt to save .
def attachment(filename = nil, disposition='attachment')
          if filename
            param_filename = File.basename(filename)
            encoding = param_filename.encoding
            needs_encoding = param_filename.gsub!(/[^ 0-9a-zA-Z!\#$&\+\.\^_`\|~]+/, '-')
            params = "; filename=#{param_filename.inspect}"
            if needs_encoding && (encoding == UTF8_ENCODING || encoding == ISO88591_ENCODING)
              encoded_filename = File.basename(filename).force_encoding(BINARY_ENCODING)
              encoded_filename.gsub!(/[^0-9a-zA-Z!\#$&\+\.\^_`\|~]/) do |c|
                "%%%X" % c.ord
              end
              encoded_params = "; filename*=#{encoding.to_s}''#{encoded_filename}"
            end
            unless @headers["Content-Type"]
              ext = File.extname(filename)
              unless ext.empty?
                content_type(ext)
              end
            end
          end
          @headers["Content-Disposition"] = "#{disposition}#{params}#{encoded_params}"
        end
def attachment ( filename = nil , disposition = 'attachment' ) if filename param_filename = File . basename ( filename ) encoding = param_filename . encoding needs_encoding = param_filename . gsub! ( / [^ 0-9a-zA-Z! \# $& \+ \. \^ _` \| ~]+ / , '-' ) params = "; filename=#{param_filename.inspect}" if needs_encoding && ( encoding == UTF8_ENCODING || encoding == ISO88591_ENCODING ) encoded_filename = File . basename ( filename ) . force_encoding ( BINARY_ENCODING ) encoded_filename . gsub! ( / [^0-9a-zA-Z! \# $& \+ \. \^ _` \| ~] / ) do | c | "%%%X" % c . ord end encoded_params = "; filename*=#{encoding.to_s}''#{encoded_filename}" end unless @headers [ "Content-Type" ] ext = File . extname ( filename ) unless ext . empty? content_type ( ext ) end end end @headers [ "Content-Disposition" ] = "#{disposition}#{params}#{encoded_params}" end
Set the Content-Disposition to "attachment" with the specified filename,
instructing the user agents to prompt to save.
Set the Content - Disposition to " attachment " with the specified filename instructing the user agents to prompt to save .
# File name contains non attr-char characters from RFC 5987 Section 3.2.1 # Similar regexp as above, but treat each byte separately, and encode # space characters, since those aren't allowed in attr-char
filename
disposition