(多部分)zip 上传到 ruby 由 rack 处理的 webmachine
(Multipart) zip upload in ruby webmachine handled by rack
我正在 ruby webmachine 应用程序中制作 zip 的上传表单。我的想法是通过我的后端上传,我可以在其中添加一些额外的参数,然后使用 RestClient 将其上传到亚马逊 s3 服务。
我确实成功地创建了一个直接上传(基于 Web 的表单 post)到 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 类型。我确实明确地将其设置为; application/octet-stream
诸如 File.new(filename, 'rb')
之类的东西给了我 `rrno::ENOENT: No such file or directory @ rb_sysopen'。对于文件名,我只使用了 'example.zip'.
我想我遗漏了一些与 Rack::Request call(env) 方法有关的东西。
有人知道如何处理 Rack 上传吗?或者给我任何新方向的提示?谢谢。
我创建了一个要点来展示如何检索多部分流。您需要进一步解析才能获得上传的文件。
https://gist.github.com/jewilmeer/eb40abd665b70f53e6eb60801de24342
我正在 ruby webmachine 应用程序中制作 zip 的上传表单。我的想法是通过我的后端上传,我可以在其中添加一些额外的参数,然后使用 RestClient 将其上传到亚马逊 s3 服务。
我确实成功地创建了一个直接上传(基于 Web 的表单 post)到 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 类型。我确实明确地将其设置为; application/octet-stream
诸如 File.new(filename, 'rb')
之类的东西给了我 `rrno::ENOENT: No such file or directory @ rb_sysopen'。对于文件名,我只使用了 'example.zip'.
我想我遗漏了一些与 Rack::Request call(env) 方法有关的东西。
有人知道如何处理 Rack 上传吗?或者给我任何新方向的提示?谢谢。
我创建了一个要点来展示如何检索多部分流。您需要进一步解析才能获得上传的文件。
https://gist.github.com/jewilmeer/eb40abd665b70f53e6eb60801de24342