Save image from URL by paperclip Save image from URL by paperclip ruby ruby

Save image from URL by paperclip


In Paperclip 3.1.4 it's become even simpler.

def picture_from_url(url)  self.picture = URI.parse(url)end

This is slightly better than open(url). Because with open(url) you're going to get "stringio.txt" as the filename. With the above you're going to get a proper name of the file based on the URL. i.e.

self.picture = URI.parse("http://something.com/blah/avatar.png")self.picture_file_name    # => "avatar.png"self.picture_content_type # => "image/png"


Here is a simple way:

require "open-uri"class User < ActiveRecord::Base  has_attached_file :picture  def picture_from_url(url)    self.picture = open(url)  endend

Then simply :

user.picture_from_url "http://www.google.com/images/logos/ps_logo2.png"


It didn't work for me until I used "open" for parsed URI.once I added "open" it worked!

def picture_from_url(url)  self.picture = URI.parse(url).openend

My paperclip version is 4.2.1

Before open it wouldn't detect the content type right, because it wasn't a file. It would say image_content_type: "binary/octet-stream", and even if I override it with the right content type it wouldn't work.