Sinatra ile dosya yükleyebilmek için çalışıyorum. here koduna sahibim, ancak "method file_hash yok" hatasını alıyorum (bkz. /lib/mvc/helpers/helpers.rb).Sinatra ile dosya yükleme
Burada neler oluyor? Kaybolduğum bir bağımlılık var mı?
Sinatra ile dosya yükleyebilmek için çalışıyorum. here koduna sahibim, ancak "method file_hash yok" hatasını alıyorum (bkz. /lib/mvc/helpers/helpers.rb).Sinatra ile dosya yükleme
Burada neler oluyor? Kaybolduğum bir bağımlılık var mı?
this thread adresinde bulunan örnek kodla iyi şanslar yaşadım.
durumda bağlantı hiç kaybolur buradan dahildir:
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
Sonra görünümü şu şekilde görünecektir.
%form{:action=>"/upload",:method=>"post" ,:enctype=>"multipart/form-data"}
%input{:type=>"file",:name=>"file"}
%input{:type=>"submit",:value=>"Upload"}
buldum
include FileUtils::Verbose
get '/upload' do
erb :upload
end
post '/upload' do
tempfile = params[:file][:tempfile]
filename = params[:file][:filename]
cp(tempfile.path, "public/uploads/#{filename}")
'Yeaaup'
end
__END__
@@upload
<form action='/upload' enctype="multipart/form-data" method='POST'>
<input name="file" type="file" />
<input type="submit" value="Upload" />
</form>
, biraz değişmiş ve kullanılmış: aksi takdirde sadece yerine bir nesnenin ismini alacak, bu HAML kullanır, ancak önemli bir kısmı da form elemanının enctype ayarlamak için unutmak değil Bu:
if params[:file]
filename = params[:file][:filename]
tempfile = params[:file][:tempfile]
target = "public/files/#{filename)
File.open(target, 'wb') {|f| f.write tempfile.read }
end
orijinal https://github.com/tbuehlmann/sinatra-fileupload olan ama benim ortamında bazı yapılandırma sorunları var. Yükleme formunda enctype="multipart/form-data"
ve method='POST'
kullanmayı unutmayın.
Durumumda, ilk hash anahtarının bir dize olduğunu - bir sembol değil - buluyorum. 'Parametreler [ 'Dosya'] ' –
Bu konuda ataç kullanmayı denediğiniz var. Kodunuzu tekrar yapıştırabilir misiniz (link, ölü bir sayfaya yönlendirir)? Aksi halde, çözümün neydi? – slant