回形针无需扩展即可保存远程图像

时间:2012-07-18 11:45:57

标签: ruby-on-rails image file-extension

这里我有控制器

require 'open-uri'

user = User.new
url = "some_remote_image.jpg" #remote image WITH extension
user.image = open(url)
user.save

模型

has_attached_file :image,
  :styles => { :thumb => "25x25>", :large => "1000x1000>" }, 
  :path => ":rails_root/images/users/:id/:style/:hash.:extension",
  :url => "/images/users/:id/:style/:hash.:extension",
:hash_secret => "hash string"

这项工作,但图像存储没有扩展,例如。 “some_remote_image。” 如果通过邮寄方式上传图片,则可以使用扩展程 我糊涂了。

2 个答案:

答案 0 :(得分:4)

我通过将Paperclip更新到最后的github版本来解决它,并设置这样的图像而不是user.image = open(url)

user.image = URI.parse(url)

答案 1 :(得分:3)

如果有人想要反向的话 - 将扩展名添加到无扩展名文件

  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