我正在尝试编写一个方法,使用EXIFR gem来检索有关使用Carrierwave上传的照片的数据(在本例中为相机模型)。我正在使用的当前方法在我的模型中看起来像这样:
before_save :get_exif_data
def get_exif_data
imgfile = EXIFR::JPEG.new(photo.filename)
return
self.model = imgfile.model
end
然而,我收到错误"没有这样的文件或目录 - IMG_0953.JPG" (或其他文件名)。
我的目标是提取"类型的相机"保存前使用EXIFR gem的.model方法的数据。从EXIFR gem文档:
EXIFR::JPEG.new('IMG_6841.JPG').model # => "Canon PowerShot G3"
错误告诉我,我的photo.filename尚未创建。如何在保存图像之前处理图像?
答案 0 :(得分:1)
实际上,像以下这样的东西最终为我工作:
before_save :get_camera
private
def get_camera
self.model = EXIFR::JPEG.new(photo.file.path).model
end
end
答案 1 :(得分:0)
尝试
EXIFR::JPEG.new(Rails.root.to_s + photo.filename_url)
carrierwave返回的网址如/uploads/...
它是webapp的相对路径,但EXIFR::JPEG
会认为它是系统文件的路径