2012-07-18 69 views
3

这里我控制器回形针保存远程图像,而不扩展

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。” 如果通过邮件上传图片,所有东西都会上传WITH扩展名。 我很困惑。

回答

4

我解决它通过更新回形针最后的github版本,并设置图像这样的,而不是user.image =开放(URL)

user.image = URI.parse(url) 
+0

我认为你的意思 user.image = URI.parse(URL) – oshikryu 2013-03-30 14:40:41

+0

我有同样的问题,上述方案的工作,但它的副作用只有一个样式(没有缩略图)是越来越创建。如何解决这个问题? – Imran 2016-03-19 21:23:55

2

在情况下,如果有人想反向的事情 - 添加扩展没有扩展名的文件

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