我正在使用ruby webmachine应用程序为拉链制作上传表单。我的想法是通过我的后端上传,我可以添加一些额外的参数,然后使用RestClient将其上传到amazons s3服务。
我成功地创建了一个直接上传(基于网络的表单帖子)到s3bucket,但是这样我就无法按照我想要的方式处理请求中所需的变量。
我已经尝试了几件事,但我无法理解,如何处理请求,一旦它进入我的后端。我已经创建了一个资源,我正在process_post
方法中直接调试。
我的@request
变量代表Webmachine::Request
,Webmachine::Adapters::Rack::RequestBody
和Rack::Request
,但我无法从中获取该文件以将其用作输入我的RestClient请求。
我想; @request.body.to_s
和@request.body.to_io
以某种方式表示上传的文件,我尝试将它们用作Rack::Multipart
方法的输入,但这并没有给我文件。
我也尝试使用rack-raw-upload gem,但我不能得到除“application / x-www-form-urlencoded”或multipart之外的mime-type。我明确地将它设置为; application/octet-stream
像File.new(filename, 'rb')
这样的东西给了我`rrno :: ENOENT:没有这样的文件或目录@ rb_sysopen'。对于文件名,我只使用'example.zip'。
我想我错过了一些与Rack :: Request call(env)方法有关的东西。
有人对如何处理Rack上传有所了解吗?或者给我一些新方向的提示?谢谢。
答案 0 :(得分:1)
我创建了一个要点,说明如何检索多部分流。您需要进一步解析才能获取上传的文件。
https://gist.github.com/jewilmeer/eb40abd665b70f53e6eb60801de24342