マルチパートフォームにrestclientを使用して、データをRESTful Webサービス(Pandaビデオエンコーディングサービス)に送信しています。ただし、トリックは、restclient(Technoweenieブランチ)に渡すファイルが、ユーザーが送信する自分のフォームからのものであるということです。
それでは、これを見ていきましょう。ユーザーが私のRailsアプリにファイルを投稿します。私のコントローラーでは、params [:file]からファイルを受け取ります。次に、RestClientを使用してparams [:file]をPandaに渡します。
私が得ているエラーは、パンダサーバーにあります。スタックトレースのファイルパラメータも文字列に含まれていることに気付きました(これは、Pandaがより良いスタックトレースの文字列に変わると思います)。
~ 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'