退货声明

时间:2010-11-13 21:57:57

标签: ruby ruby-on-rails-3

after_photo_post_process:post_process_photo

 def post_process_photo
  img = EXIFR::JPEG.new(photo.queued_for_write[:original].path)  # error on this line
  return unless img

  self.width = img.width
  self.height = img.height
  self.model = img.model
end

我使用名为EXIFR的ruby gem从JPEG文件中提取EXIF数据。 EXIF数据只是关于图片的技术数据。因此,当我上传JPEG时,我的代码工作正常,但是任何其他图像类型都会导致它中断。

EXIFR :: ImagesController中的MalformedJPEG #create

找不到图像标记的开始

我假设如果没有为img变量赋值,那么return语句将允许它工作,但看起来情况并非如此。

1 个答案:

答案 0 :(得分:1)

您可以挽救错误并返回其他内容。

def post_process_photo
  begin 
    img = EXIFR::JPEG.new(photo.queued_for_write[:original].path)  # error on this line
    self.width = img.width
    self.height = img.height
    self.model = img.model
  rescue EXIFR::MalformedJPEG
    return nil
  end
end