diff options
author | José Valim <jose.valim@gmail.com> | 2010-01-16 13:17:03 +0100 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-01-16 15:45:07 +0100 |
commit | 92f49b5f1ebf42514c58e1fda87c0b8a1b33d08f (patch) | |
tree | 860e27b214bbb5e03ea235eae32558ba6fb23515 /actionpack/lib/action_dispatch/http/upload.rb | |
parent | 5a52523a800c8a57d1ad80ad3a0ba81711cce38e (diff) | |
download | rails-92f49b5f1ebf42514c58e1fda87c0b8a1b33d08f.tar.gz rails-92f49b5f1ebf42514c58e1fda87c0b8a1b33d08f.tar.bz2 rails-92f49b5f1ebf42514c58e1fda87c0b8a1b33d08f.zip |
Split ActionDispatch http in smaller chunks.
Diffstat (limited to 'actionpack/lib/action_dispatch/http/upload.rb')
-rw-r--r-- | actionpack/lib/action_dispatch/http/upload.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/http/upload.rb b/actionpack/lib/action_dispatch/http/upload.rb new file mode 100644 index 0000000000..dc6121b911 --- /dev/null +++ b/actionpack/lib/action_dispatch/http/upload.rb @@ -0,0 +1,48 @@ +module ActionDispatch + module Http + module UploadedFile + def self.extended(object) + object.class_eval do + attr_accessor :original_path, :content_type + alias_method :local_path, :path if method_defined?(:path) + end + end + + # 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. + # The Windows regexp is adapted from Perl's File::Basename. + def original_filename + unless defined? @original_filename + @original_filename = + unless original_path.blank? + if original_path =~ /^(?:.*[:\\\/])?(.*)/m + $1 + else + File.basename original_path + end + end + end + @original_filename + end + end + + module Upload + # Convert nested Hashs to HashWithIndifferentAccess and replace + # file upload hashs with UploadedFile objects + def normalize_parameters(value) + if Hash === value && value.has_key?(:tempfile) + upload = value[:tempfile] + upload.extend(UploadedFile) + upload.original_path = value[:filename] + upload.content_type = value[:type] + upload + else + super + end + end + private :normalize_parameters + end + end +end
\ No newline at end of file |