マルチポストでrestclientを使用します
-
13-09-2019 - |
質問
私は、RESTfulなWebサービス(それのパンダビデオエンコーディングサービス)にデータを送信するためにマルチパートフォームのrestclientを使用しています。 トリックはしかし、私はrestclient(Technoweenie支店)に渡していたファイルは、ユーザーが提出することを私自身のフォームから来ているということです。
だから、この中を歩くことができます。ユーザーは、自分のレールのアプリにファイルをポストします。 [:ファイル]私のコントローラでは、それはのparamsからファイルを受け取ります。私はその後のparamsを通過したい[:ファイル] RestClientを使ってパンダにダウンを
。 パンダサーバは以下の上で私は取得していますエラーです。私は、スタックトレース内のファイルのparamは(私はパンダがよりよいスタックトレースの文字列になりつつあると仮定している)だけでなく、文字列であることに気づいています。
~ Started request handling: Wed Aug 12 18:05:15 +0000 2009
~ Params: {"format"=>"html", "multipart"=>"true", "account_key"=>"SECURE_KEY", "action"=>"upload", "id"=>"SECURE_ID", "controller"=>"videos", "file"=>"#<File:0xcf02ca4>"}
~ 9bfb1750-6998-012c-4509-12313900b0f6: (500 returned to client) InternalServerErrorcan't convert nil into String
/var/local/www/panda/app/models/video.rb:246:in `extname'
/var/local/www/panda/app/models/video.rb:246:in `initial_processing'
/var/local/www/panda/app/controllers/videos.rb:79:in `upload'
解決
私はあなたが本当にrestclientにレールからCGIスタイルのアップロードのparamを渡し、それが動作することを期待することができます疑います。
のRailsでの定期的なアップロードが(ようにオリジナルのファイル名など)掲載のリソースに属していない、非常にいくつかの追加の属性を持っているでしょう、とRailsのアップロードは、実際のファイルデータとIOが含まれています。また、Railsの中のファイルアップロードオブジェクトは、一時ファイルハンドルであるかもしれないとのStringIOかもしれない - アップロードのサイズに応じて
。あなたが効果的に行うために必要なことはrestclientが適切にそれを処理し、restclientに再パッケージ化し、巻き戻し一時ファイルオブジェクトを渡すためにあなたのアップロードを「再パッケージ」です。 [:ファイル]たぶん、あなただけのアップロードオブジェクト自体の代わりに、全体のparamsを選んで逃げることができます。
他のヒント
あなたのrestclientアクションが最初にローカルに保存することができていることを確認してください。アクションは、ローカルに保存することができない場合は、どこトラブルシューティングながら見るためのより良いアイデアを持っています。
見えます。
この質問にマルチパートフォームデータを投稿するための例のロット:<のhref = "https://stackoverflow.com/questions/184178/ruby-how-to-post-a-file-via-http-as-マルチパート・フォーム・データ」>ルビー:?どのようにマルチパート/フォームデータとして、HTTP経由でファイルを投稿するの