我學習Ruby +西納特拉,發現好的帖子here其中談到如何上傳文件。POST錯誤與西納特拉與JSON
post '/upload/:filename' do
userdir = "./upload"
FileUtils.mkdir_p(userdir) unless File.exists?(userdir)
filename = File.join(userdir, params[:filename])
datafile = params[:data]
File.open(filename, 'wb') do |file|
file.write(datafile[:tempfile].read)
end
end
我可以使用下面的cURL命令來上傳文件。
curl -v -F "[email protected]/Users/me/Desktop/test.pdf" http://localhost:4567/upload/test.pdf
但現在我決定使用JSON來處理所有傳入/傳出響應。我試過這個,但它似乎沒有工作。
curl -i -X POST -H Accept:application/json -H Content-Type:application/json -d '{file:{filename:"test.pdf",md5sum:"ab3d2f"}}' --data-binary @/Users/me/Desktop/test.pdf 'http://localhost:4567/upload/test.pdf'
我也收到了這樣的錯誤:
NoMethodError at /upload/test.pdf
undefined method `get' for #<WebTest:0x101374dd8>
file: web.rb location: POST /upload/:filename line: 48
我現在應該怎麼辦?
編輯:
48號線是這個file.write(datafile[:tempfile].read
請幫幫忙!
您需要調試。首先,我會確定哪一行是第48行。 – akonsu
根據Sinatra的說法,它絕對是如何爲POST使用「路由」的。除非我錯過這裏的東西。 – xbeta
爲什麼我會關心「GET」,因爲我只需要構建一個POST方法。並且只會使用POST方法。 – xbeta