2008-12-24 22:51:04 -05:00
|
|
|
module ActionController
|
|
|
|
module UploadedFile
|
|
|
|
def self.included(base)
|
|
|
|
base.class_eval do
|
|
|
|
attr_accessor :original_path, :content_type
|
|
|
|
alias_method :local_path, :path
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2009-01-17 21:29:50 -05:00
|
|
|
def self.extended(object)
|
|
|
|
object.class_eval do
|
|
|
|
attr_accessor :original_path, :content_type
|
|
|
|
alias_method :local_path, :path
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2008-12-24 22:51:04 -05:00
|
|
|
# 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
|
|
|
|
|
|
|
|
class UploadedStringIO < StringIO
|
|
|
|
include UploadedFile
|
|
|
|
end
|
|
|
|
|
|
|
|
class UploadedTempfile < Tempfile
|
|
|
|
include UploadedFile
|
|
|
|
end
|
|
|
|
end
|