在回形针上保存图像时缺少扩展名

时间:2011-05-28 02:14:55

标签: ruby-on-rails paperclip

 image = PortfolioFileItem.find(107)  
 img_source = "http://s3.amazonaws.com/test/portfolio_file_items_final/original/1.jpg"
 image.picture_from_url(img_source)
 image.save(false)

图像保存已完成但缺少图像扩展名。这是保存的示例图像名称:  开uri20110528-6779-fpiust-0。

请帮我解决问题。感谢

2 个答案:

答案 0 :(得分:5)

要向paperclip添加扩展名,请在has_attached_file之后添加此行作为选项

:path => ":rails_root/public/:attachment/:id/:style/:basename.:extension"

您可以自定义此路径以满足您的需求,但最后必须有.:extension,:扩展名是可用于插值的众多值之一。

有关详细信息,请参阅此blog post

答案 1 :(得分:0)

如果实际文件最初没有扩展名,您可以检测扩展名并在保存之前添加它

  def besfore_save
    tempfile = data.queued_for_write[:original]
    unless tempfile.nil?
      extension = File.extname(tempfile.original_filename)
      if !extension || extension == ''
        mime = tempfile.content_type
        ext = Rack::Mime::MIME_TYPES.invert[mime]
        self.data.instance_write :file_name, "#{tempfile.original_filename}#{ext}"
      end
    end

    true
  end