由机架

时间:2016-05-13 12:15:36

标签: ruby rack webmachine

我正在使用ruby webmachine应用程序为拉链制作上传表单。我的想法是通过我的后端上传,我可以添加一些额外的参数,然后使用RestClient将其上传到amazons s3服务。

我成功地创建了一个直接上传(基于网络的表单帖子)到s3bucket,但是这样我就无法按照我想要的方式处理请求中所需的变量。

我已经尝试了几件事,但我无法理解,如何处理请求,一旦它进入我的后端。我已经创建了一个资源,我正在process_post方法中直接调试。

我的@request变量代表Webmachine::RequestWebmachine::Adapters::Rack::RequestBodyRack::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上传有所了解吗?或者给我一些新方向的提示?谢谢。

1 个答案:

答案 0 :(得分:1)

我创建了一个要点,说明如何检索多部分流。您需要进一步解析才能获取上传的文件。

https://gist.github.com/jewilmeer/eb40abd665b70f53e6eb60801de24342