Class: Rack::Multipart::Parser::Collector::MimePart

Inherits:
Struct
  • Object
show all
Defined in:
lib/rack/multipart/parser.rb

Direct Known Subclasses

BufferPart, TempfilePart

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#bodyObject

Returns the value of attribute body

Returns:

  • (Object)

    the current value of body



80
81
82
# File 'lib/rack/multipart/parser.rb', line 80

def body
  @body
end

#content_typeObject

Returns the value of attribute content_type

Returns:

  • (Object)

    the current value of content_type



80
81
82
# File 'lib/rack/multipart/parser.rb', line 80

def content_type
  @content_type
end

#filenameObject

Returns the value of attribute filename

Returns:

  • (Object)

    the current value of filename



80
81
82
# File 'lib/rack/multipart/parser.rb', line 80

def filename
  @filename
end

#headObject

Returns the value of attribute head

Returns:

  • (Object)

    the current value of head



80
81
82
# File 'lib/rack/multipart/parser.rb', line 80

def head
  @head
end

#nameObject

Returns the value of attribute name

Returns:

  • (Object)

    the current value of name



80
81
82
# File 'lib/rack/multipart/parser.rb', line 80

def name
  @name
end

Instance Method Details

#get_data {|data| ... } ⇒ Object

Yields:

  • (data)


81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/rack/multipart/parser.rb', line 81

def get_data
  data = body
  if filename == ""
    # filename is blank which means no file has been selected
    return
  elsif filename
    body.rewind if body.respond_to?(:rewind)

    # Take the basename of the upload's original filename.
    # This handles the full Windows paths given by Internet Explorer
    # (and perhaps other broken user agents) without affecting
    # those which give the lone filename.
    fn = filename.split(/[\/\\]/).last

    data = {:filename => fn, :type => content_type,
            :name => name, :tempfile => body, :head => head}
  elsif !filename && content_type && body.is_a?(IO)
    body.rewind

    # Generic multipart cases, not coming from a form
    data = {:type => content_type,
            :name => name, :tempfile => body, :head => head}
  end

  yield data
end