Create FileColumn Image without a From

Hey,

im creating a new bookmark with a form and i’m uploading an image with
File Column. This works well!

But another function is to copy this bookmark. That means it will be
created a new Object, with an new Id. All the other attributes should
be copied from the original. That works, but not with the “image”
attribute. Thats where the fileColumn Image is placed. Im getting the
error:

'Do not know how to handle a string with value ‘/path/Bild_4.jpg’

I think fileColumn expects an File, and not an string url. But i don’t
know to solve this Problem :frowning:

Here is my Code:

@bookmark = Bookmark.new(:title => oldBookmark.title,
:url => oldBookmark.url,
:description => oldBookmark.description,
:confirmed => 0,
:user =>User.find(session[:user]),
:image => oldBookmark.image )

@bookmark.save

Maybe someone has an idea? Thanks a lot!

I’m not sure what you mean fully, but I think you mean save an item from
the
FS or URL…not uploaded via a form

here is an example from when I used a FileColumn to upload an image to
my
database using a URL (it is 2 years old and very ugly code)

essentially in your case just treat your string as I do the URL

in environment.rb have:
require ‘ftools’
require ‘fileutils’

and in your controller something like

raise if not orig =~
/^(http|https)://[a-z0-9]+([-.]{1}[a-z0-9]+).[a-z]{2,5}(([0-9]{1,5})?/.)?$/ix

   logger.error "???????????? VALUE >> #{orig}"
   response = false
      #if good url format, get the file
      tn = open(orig)
      filename = orig.split("/")

      tp = tn.path
      nf = File.new(tp)
      nf_path = File.split(nf.path)

      f = "#{nf_path[0]}" << "/" << "#{filename.last}"

      #dreamhost is case sensitive, this is for URL's only
      f = f.downcase
      logger.error "FFFFFFFFFFF  #{f}"

      FileUtils.touch f

      #sleep 2
      ff = File.new("#{f}")
      FileUtils.copy nf.path, ff.path

      @tile.img_name = File.new(ff.path) #gold

   rescue
      if response == false
        logger.error "???????????? BAD URL >> #{orig}"
      end
   end
 else
  #if orig is empty
  logger.error "ZZZZZZZZZZZZZZZZZZZ NO URL >> #{orig}"
 end

#if both img fields are empty: upload a default img (for now)
if @tile.img_name.nil?
  #@tile.img_name = File.new(RAILS_ROOT + 

“/public/images/rails.png”)
#gold default if they do not upload a file
logger.error “??? no FILE”
if @tile.img_path.empty? or response == false
@tile.img_name = File.new(RAILS_ROOT +
“/public/images/default.jpg”)
#gold default if they do not upload a file
logger.error “??? no URL”
end
else
#params[:tile][:img_name].path.downcase
end

if @tile.save
#email admin about new tile
MailMe::deliver_new_tile(@session[:user], @tile.id);

    @ts_e.save
    if session[:user].login == "anonymous"
      redirect_to :controller => '/user/logout'
    else
      redirect_to :controller => '/user/account/'
    end
  else
    render :action => 'index'  #should go back to upload_tile
  end

checkout working example at www.blogsaic.com/tile

no login required