I haven’t cracked the source of file_column just yet - but has anyone
worked
out a way to snag images via URL instead of a file upload?
Optimally I’d like to have my clients be able to upload a file, or enter
in
a URL to store as file on the system.
Any/all help would be cool.
On Jun 21, 2006, at 8:15 PM, subimage interactive wrote:
seth at subimage interactive
http://www.subimage.com/sublog/
Rails mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails
Try something like this:
require ‘open-uri’
def fetch_resource(options={})
File.open(options[:to], “wb”) { |f| f.write open(options
[:from]).read }
end
fetch_resource :from => “http://example.com/foo.gif”,
:to => “#{RAILS_ROOT}/public/assets/
foo.gif”
Cheers-
-Ezra
Thanks EZ, but that’s the easy part
The hard part is getting file_column to take it and do its magic. Guess
I
need to look into the source. I saw a BaseUploadedFile::assign that
might be
useful in combination with your code.
That got me on the right track…here’s my full controller method.
image_url
is pre-populated most of the time by my data import scripts.
Hopefully someone else finds this snippet useful.
Imports an image from the item’s url and feeds it into the image
upload
field.
file_column automagically resizes it, and we set the item to use the
newly
uploaded image
def import_image
require ‘open-uri’
@item = Item.find(params[:id])
if !@item
redirect_to :back and return
end
import_from = @item.image_url.clone
chop_position = import_from.rindex("/")
file_name = import_from[chop_position+1..import_from.size-1]
save_to = "#{RAILS_ROOT}/public/item/image_upload/test/#{file_name}"
File.open(save_to, "wb") { |f| f.write open(import_from).read }
@item.image_upload = File.open(save_to)
@item.image_use_option = 2
@item.save
redirect_to :action => 'edit', :id => @item
end