Dan*_*ade 6 ruby ruby-on-rails rest-client
我正在使用restclient进行多部分表单将数据发送到一个宁静的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'
Run Code Online (Sandbox Code Playgroud)
我怀疑你真的可以将 CGI 风格的上传参数从 Rails 传递到 Restclient 并期望它能够工作。
Rails 中的常规上传会有相当多的额外属性,这些属性不属于已发布的资源(如原始文件名等),并且 Rails 上传包含具有实际文件数据的 IO。此外,Rails 中的文件上传对象可能是 Tempfile 句柄,也可能是 StringIO - 取决于上传的大小。
您实际上需要做的是“重新打包”您的上传,以便rest-client 正确处理它,并将重新打包和回滚的 Tempfile 对象传递给restclient。也许您可以只选择上传对象本身而不是整个 params[:file]
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |