def store(file, uid, hash = {})
image = new(hash)
type = file[:type]
filename = file[:filename]
tempfile = file[:tempfile]
raise ArgumentError, 'Empty tempfile' if tempfile.size == 0
ext = Rack::Mime::MIME_TYPES.invert[type]
image.mime = type
target_name = image.next_name(File.basename(filename, File.extname(filename)), ext)
target_path = File.join(image.public_root, image.path, target_name)
FileUtils.mkdir_p(File.dirname(target_path))
FileUtils.cp(tempfile.path, target_path)
image.original = target_path
image.save
end