2014-11-21 61 views
1

我用回形針4.2 + Rails的4.1.6與下面的模型時,內容類型是錯誤的:回形針說,使用外部URL作爲附件

class Post < ActiveRecord::Base 

    has_attached_file :featured_image, styles: { :medium => "300x300>", :thumb => "100x100>" } 
    validates_attachment :featured_image, :content_type => { :content_type => ["image/jpeg", "image/gif", "image/png"] } 


    def featured_image_from_url(url) 
    self.featured_image = URI.parse(url) 
    end 

end 

當我與上傳的文件上傳一個文件我形式,一切工作正常。附件已設置並生成縮略圖。

但是,如果我嘗試使用遠程URL指向一個JPEG圖像,如指定here,該帖子無法保存,因爲附件有錯誤的內容類型:featured_image_content_type:「二進制/八位字節流」

如果我通過手動設置強制內容類型:

post.featured_image_content_type = "image/jpeg" 
post.save 

然後模型成功保存。

回答

0

嗨,我不知道你是否找到了解決方法呢。我用下面的代碼(修訂了你的例子)停止回形針(4.2.1)拋出一個異常時,Web服務器返回一個不正確的內容類型:

def featured_image_from_url(url) 
    self.featured_image = URI.parse(url) 
    # deal with the case where the webserver 
    # returns an incorrect content-type 
    adapter = Paperclip.io_adapters.for(featured_image) 
    self.featured_image_content_type = Paperclip::ContentTypeDetector.new(adapter.path).detect 
end 

有可能是一個整潔或更正確的方式!