2017-03-05 4 views
0
に(フォームなし)

を、ファイルのアップロードを受け入れる::基本コード:は、私はこのシナトラを持っシナトラ

class Crush < Sinatra::Base 
    post '/upload' do 
    erb params.inspect 
    end 
end 

私はポストマンやファイルをアップロードするためのインタフェースを使用しています。だからform-dataというPOSTリクエストを送ります。要求の本文には、名前はhelloで、値は単純な文字列hey thereを含むファイルtest.txtです。

私はparams.inspectを行うと、私はこの長い文字列

{取得 "------ WebKitFormBoundaryocOEEr26iZGSe75n \ rを\ nContent-処分:フォームのデータを、名称" => "\" こんにちは\ ";ファイル名= \ "\\ \\" \\ \\ "\\" \\ "\\" \\ "\\" \\ "\\\"基本的に1つのキーと1つの値で長いです。ほとんどのSinatraチュートリアル(ファイルがフォームから受け入れられるところ)を読むと、Sinatraがparams[:file]を使ってこれを処理する良い方法がありますが、ファイルがHTTP要求の本文からまっすぐに来ているようなことはありません。

私はモジュラーではない手法を試してみましたが、Sinatra::Baseという構文解析のミドルウェアがないと思っていましたが、同じ結果が得られました。

ここに何か不足していますか?私はこの長いハッシュの内容を取得するために自分のカスタムパーサを作成しなければなりませんか?それとも簡単な方法がありますか?

答えて

2

私はそれが郵便配達の問題だと考えました。郵便配達の「x-www-form-urlencoded」から「form-data」に切り替えると、ヘッダーセクションのフィールド:Content-Type => application/x-www-form-urlencodedは削除されません。したがって、この問題が発生した場合は、手動で削除するようにしてください。

関連する問題