我正在为 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) 方法有关的东西。
有人知道如何处理机架上传吗?或者给我一些新方向的提示?谢谢。