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
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
If you use datamapper, there is an paperclip for datamapper!
regards!
Marcos V. 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
Tony T. 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”}
Thank you Brian! I will give it a shot when I have some time and reply
here. Truly appreciate it!
-Tony
Brian C. wrote:
Tony T. 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
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
Brian C. 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) }
endso 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
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) }
endso 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.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs