Uploading files in the AgileDev book?

The Agile Development book uses the following code to turn a file name string into something that can be read as a file:

class Picture<ActiveRecord::Base   def picture=(picture_field)     self.name=base_part_of(picture_field.original_filename)     self.content_type=picture_field.content_type.chomp     self.data=picture_field.read   end

  def base_part_of(file_name)     name=File.basename(file_name)     name.gsub(/[^\w._-]/,'')   end end

Can anyone explain what's going on here? Where is original_filename defined? Is there a less obscure way to perform a read on a filename that refers to a file on the visitor's disk?