2012-07-18 55 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