Hi all, I need to upload an image from my local computer to a web server and store the location in a database (similar to how Paperclip and attachment_fu work) in Sinatra. Any ideas on how to get this to work? Thanks in advance, Tony
on 2009-08-09 01:02
on 2009-08-09 02:00
Marcos Vanetta wrote: > If you use datamapper, there is an paperclip for datamapper! > > regards! Thanks for the reply! I'm using ActiveRecord and wouldn't want to change to Datamapper unless I HAD to. Thanks again, I'll look into it as soon as I get a chance. -Tony
on 2009-08-10 10:51
Tony Tony wrote: > I need to upload an image from my local computer to a web server and > store the location in a database (similar to how Paperclip and > attachment_fu work) in Sinatra. I don't know Paperclip or attachment_fu, but getting the attachment in Sinatra is easy: you get an open tempfile that you read from. Something like this (extracted from some working code but not tested in isolation): post '/upload' do unless params[:file] && (tmpfile = params[:file][:tempfile]) && (name = params[:file][:filename]) @error = "No file selected" return haml(:upload) end STDERR.puts "Uploading file, original name #{name.inspect}" while blk = tmpfile.read(65536) # here you would write it to its final location STDERR.puts blk.inspect end "Upload complete" end --------- %h1 Upload %form{:action=>"/upload",:method=>"post",:enctype=>"multipart/form-data"} %input{:type=>"file",:name=>"file"} %input{:type=>"submit",:value=>"Upload"}
on 2009-08-10 11:10
Brian Candler wrote: > Tony Tony wrote: >> I need to upload an image from my local computer to a web server and >> store the location in a database (similar to how Paperclip and >> attachment_fu work) in Sinatra. > > I don't know Paperclip or attachment_fu, but getting the attachment in > Sinatra is easy: you get an open tempfile that you read from. > > Something like this (extracted from some working code but not tested in > isolation): > > post '/upload' do > unless params[:file] && > (tmpfile = params[:file][:tempfile]) && > (name = params[:file][:filename]) > @error = "No file selected" > return haml(:upload) > end > STDERR.puts "Uploading file, original name #{name.inspect}" > while blk = tmpfile.read(65536) > # here you would write it to its final location > STDERR.puts blk.inspect > end > "Upload complete" > end > > --------- > %h1 Upload > > %form{:action=>"/upload",:method=>"post",:enctype=>"multipart/form-data"} > %input{:type=>"file",:name=>"file"} > %input{:type=>"submit",:value=>"Upload"} That is helpful.Thank u so much --------------- http://dressup9x.com is a best Fashion Games, Girl Games, Dressup Game
on 2009-08-10 14:21
Thank you Brian! I will give it a shot when I have some time and reply here. Truly appreciate it! -Tony
on 2010-07-24 13:15
phanks:
post '/upload' do
unless params[:file] &&
(tmpfile = params[:file][:tempfile]) &&
(name = params[:file][:filename])
@error = "No file selected"
return haml(:upload)
end
directory = "public/files"
path = File.join(directory, name)
File.open(path, "wb") { |f| f.write(tmpfile.read) }
end
so will be better for me :)
on 2010-07-30 19:03
Almaz OM wrote: > phanks: > > post '/upload' do > unless params[:file] && > (tmpfile = params[:file][:tempfile]) && > (name = params[:file][:filename]) > @error = "No file selected" > return haml(:upload) > end > directory = "public/files" > path = File.join(directory, name) > File.open(path, "wb") { |f| f.write(tmpfile.read) } > end > > so will be better for me :) OK. Beware that f.write(tmpfile.read) will use as much RAM as the size of the attachment. Hence the suggestion to read it in and write it out in blocks of, say, 64K.
on 2011-04-05 15:45
Brian Candler wrote in post #929342: > Almaz OM wrote: >> phanks: >> >> post '/upload' do >> unless params[:file] && >> (tmpfile = params[:file][:tempfile]) && >> (name = params[:file][:filename]) >> @error = "No file selected" >> return haml(:upload) >> end >> directory = "public/files" >> path = File.join(directory, name) >> File.open(path, "wb") { |f| f.write(tmpfile.read) } >> end >> >> so will be better for me :) > > OK. Beware that f.write(tmpfile.read) will use as much RAM as the size > of the attachment. Hence the suggestion to read it in and write it out > in blocks of, say, 64K. "f.write(tmpfile.read)"?? Why so complex?... post '/upload' do tempfile = params['file'][:tempfile] filename = params['file'][:filename] File.copy(tempfile.path, "./files/#{filename}") redirect '/' end http://tumblr.com/xciegm157
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.