1

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

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

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

我的@request变量代表 a Webmachine::Request,带有 aWebmachine::Adapters::Rack::RequestBody和 a Rack::Request,但我无法从中获取文件以将其用作我的 RestClient 请求的输入。

我认为; @request.body.to_s@request.body.to_io,以某种方式表示上传的文件,我尝试将它们用作Rack::Multipart方法的输入,但这并没有给我文件。

我还尝试使用 rack-raw-upload gem,但除了“application/x-www-form-urlencoded”或 multipart 之外,我无法获得 mime 类型。我确实将其明确设置为;application/octet-stream

File.new(filename, 'rb')给了我'rrno :: ENOENT:没有这样的文件或目录@ rb_sysopen'之类的东西。对于文件名,我只使用了“example.zip”。

我想我错过了与 Rack::Request call(env) 方法有关的东西。

有人知道如何处理机架上传吗?或者给我一些新方向的提示?谢谢。

4

1 回答 1

1

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

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

于 2016-05-13T23:10:48.057 回答