Class: ActionDispatch::Http::UploadedFile

Inherits:
Object
  • Object
show all
Defined in:
actionpack/lib/action_dispatch/http/upload.rb

Overview

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

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ UploadedFile

:nodoc:

Raises:

  • (ArgumentError)


27
28
29
30
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
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 27

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_typeObject

A string with the MIME type of the file.



18
19
20
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 18

def content_type
  @content_type
end

#headersObject

A string with the headers of the multipart request.



25
26
27
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 25

def headers
  @headers
end

#original_filenameObject

The basename of the file in the client.



15
16
17
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 15

def original_filename
  @original_filename
end

#tempfileObject

A Tempfile object with the actual uploaded file. Note that some of its interface is available directly.



22
23
24
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 22

def tempfile
  @tempfile
end

Instance Method Details

#close(unlink_now = false) ⇒ Object

Shortcut for tempfile.close.



69
70
71
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 69

def close(unlink_now = false)
  @tempfile.close(unlink_now)
end

#eof?Boolean

Shortcut for tempfile.eof?.

Returns:

  • (Boolean)


94
95
96
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 94

def eof?
  @tempfile.eof?
end

#openObject

Shortcut for tempfile.open.



64
65
66
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 64

def open
  @tempfile.open
end

#pathObject

Shortcut for tempfile.path.



74
75
76
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 74

def path
  @tempfile.path
end

#read(length = nil, buffer = nil) ⇒ Object

Shortcut for tempfile.read.



59
60
61
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 59

def read(length = nil, buffer = nil)
  @tempfile.read(length, buffer)
end

#rewindObject

Shortcut for tempfile.rewind.



84
85
86
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 84

def rewind
  @tempfile.rewind
end

#sizeObject

Shortcut for tempfile.size.



89
90
91
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 89

def size
  @tempfile.size
end

#to_ioObject



98
99
100
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 98

def to_io
  @tempfile.to_io
end

#to_pathObject

Shortcut for tempfile.to_path.



79
80
81
# File 'actionpack/lib/action_dispatch/http/upload.rb', line 79

def to_path
  @tempfile.to_path
end