2016-05-13 45 views
1

我正在一個ruby webmachine應用程序的拉鍊上傳表單。我的想法是通過後端上傳我可以添加一些額外的參數,然後使用RestClient將其上傳到amazons s3服務。(多部分)zip上傳在機架處理的紅寶石webmachine

我成功地創建了一個直接上傳(基於web的表單發佈)到s3bucket,但這樣我無法處理請求中所需的變量,我想要的方式。

我已經嘗試了幾件事情,但我無法弄清楚,如何處理請求,只要它進入我的後端。我創建了一個資源,並且正在直接調用process_post方法。

@request變量表示Webmachine::Request,具有Webmachine::Adapters::Rack::RequestBodyRack::Request,但我不能讓出該文件的它用它作爲我的RESTClient實現請求輸入。

我想; @request.body.to_s@request.body.to_io,表示以某種方式上傳的文件,並且我試圖將它們用作Rack::Multipart方法的輸入,但那不會給我該文件。

我也嘗試使用rack-raw-upload gem,但是我無法獲得MIME類型的東西而不是「application/x-www-form-urlencoded」或multipart。我明確地將其設置爲; application/octet-stream

File.new(filename, 'rb')這樣的事情給了我`rrno :: ENOENT:沒有這樣的文件或目錄@ rb_sysopen'。對於文件名我只使用'example.zip'。

我想我錯過了一些與Rack :: Request調用(env)方法有關的事情。

有人有一個想法,關於如何處理機架上傳?或者給我一個新的方向提示?謝謝。

+0

可能值得發佈您的機架代碼。 – tadman

+0

@tadman那麼,我沒有實際的機架代碼。我只知道Rack處理文件上傳。我試過的Rack代碼就在上面; 'Rack :: Multipart'方法,比如'parse_multipart'。我是否應該實施其他Rack代碼? – LiveNL

回答