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?