Class: ActionDispatch::Http::UploadedFile
- Inherits:
-
Object
- Object
- ActionDispatch::Http::UploadedFile
- Defined in:
- lib/action_dispatch/http/upload.rb
Overview
# Action Dispatch HTTP UploadedFile
Models uploaded files.
The actual file is accessible via the ‘tempfile` accessor, though some of its interface is available directly for convenience.
Uploaded files are temporary files whose lifespan is one request. When the object is finalized Ruby unlinks the file, so there is no need to clean them with a separate maintenance task.
Instance Attribute Summary collapse
-
#content_type ⇒ Object
A string with the MIME type of the file.
-
#headers ⇒ Object
A string with the headers of the multipart request.
-
#original_filename ⇒ Object
The basename of the file in the client.
-
#tempfile ⇒ Object
A ‘Tempfile` object with the actual uploaded file.
Instance Method Summary collapse
-
#close(unlink_now = false) ⇒ Object
Shortcut for ‘tempfile.close`.
-
#eof? ⇒ Boolean
Shortcut for ‘tempfile.eof?`.
-
#initialize(hash) ⇒ UploadedFile
constructor
:nodoc:.
-
#open ⇒ Object
Shortcut for ‘tempfile.open`.
-
#path ⇒ Object
Shortcut for ‘tempfile.path`.
-
#read(length = nil, buffer = nil) ⇒ Object
Shortcut for ‘tempfile.read`.
-
#rewind ⇒ Object
Shortcut for ‘tempfile.rewind`.
-
#size ⇒ Object
Shortcut for ‘tempfile.size`.
- #to_io ⇒ Object
-
#to_path ⇒ Object
Shortcut for ‘tempfile.to_path`.
Constructor Details
#initialize(hash) ⇒ UploadedFile
:nodoc:
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/action_dispatch/http/upload.rb', line 31 def initialize(hash) # :nodoc: @tempfile = hash[:tempfile] raise(ArgumentError, ":tempfile is required") unless @tempfile @content_type = hash[:type] if hash[:filename] @original_filename = hash[:filename].dup begin @original_filename.encode!(Encoding::UTF_8) rescue EncodingError @original_filename.force_encoding(Encoding::UTF_8) end else @original_filename = nil end if hash[:head] @headers = hash[:head].dup begin @headers.encode!(Encoding::UTF_8) rescue EncodingError @headers.force_encoding(Encoding::UTF_8) end else @headers = nil end end |
Instance Attribute Details
#content_type ⇒ Object
A string with the MIME type of the file.
22 23 24 |
# File 'lib/action_dispatch/http/upload.rb', line 22 def content_type @content_type end |
#headers ⇒ Object
A string with the headers of the multipart request.
29 30 31 |
# File 'lib/action_dispatch/http/upload.rb', line 29 def headers @headers end |
#original_filename ⇒ Object
The basename of the file in the client.
19 20 21 |
# File 'lib/action_dispatch/http/upload.rb', line 19 def original_filename @original_filename end |
#tempfile ⇒ Object
A ‘Tempfile` object with the actual uploaded file. Note that some of its interface is available directly.
26 27 28 |
# File 'lib/action_dispatch/http/upload.rb', line 26 def tempfile @tempfile end |
Instance Method Details
#close(unlink_now = false) ⇒ Object
Shortcut for ‘tempfile.close`.
73 74 75 |
# File 'lib/action_dispatch/http/upload.rb', line 73 def close(unlink_now = false) @tempfile.close(unlink_now) end |
#eof? ⇒ Boolean
Shortcut for ‘tempfile.eof?`.
98 99 100 |
# File 'lib/action_dispatch/http/upload.rb', line 98 def eof? @tempfile.eof? end |
#open ⇒ Object
Shortcut for ‘tempfile.open`.
68 69 70 |
# File 'lib/action_dispatch/http/upload.rb', line 68 def open @tempfile.open end |
#path ⇒ Object
Shortcut for ‘tempfile.path`.
78 79 80 |
# File 'lib/action_dispatch/http/upload.rb', line 78 def path @tempfile.path end |
#read(length = nil, buffer = nil) ⇒ Object
Shortcut for ‘tempfile.read`.
63 64 65 |
# File 'lib/action_dispatch/http/upload.rb', line 63 def read(length = nil, buffer = nil) @tempfile.read(length, buffer) end |
#rewind ⇒ Object
Shortcut for ‘tempfile.rewind`.
88 89 90 |
# File 'lib/action_dispatch/http/upload.rb', line 88 def rewind @tempfile.rewind end |
#size ⇒ Object
Shortcut for ‘tempfile.size`.
93 94 95 |
# File 'lib/action_dispatch/http/upload.rb', line 93 def size @tempfile.size end |
#to_io ⇒ Object
102 103 104 |
# File 'lib/action_dispatch/http/upload.rb', line 102 def to_io @tempfile.to_io end |
#to_path ⇒ Object
Shortcut for ‘tempfile.to_path`.
83 84 85 |
# File 'lib/action_dispatch/http/upload.rb', line 83 def to_path @tempfile.to_path end |