私は Ruby + Sinatra を学んでいて、ファイルのアップロード方法について説明している良い記事を見つけました。
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 "data=@/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
助けてください!