Я делаю форму загрузки для zip-архивов в приложении ruby webmachine. Моя идея состоит в том, чтобы загрузить через свой бэкэнд, где я могу добавить некоторые дополнительные параметры, а затем загрузить их в службу Amazon s3 с помощью RestClient.
Я успешно создал прямую загрузку (сообщение веб-формы) в 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, но я не могу получить в mime-типе что-то еще, кроме «application / x-www-form-urlencoded» или multipart. Я явно устанавливаю его на; application/octet-stream
Такие вещи, как File.new(filename, 'rb')
, дали мне `rrno :: ENOENT: Нет такого файла или каталога @ rb_sysopen '. В качестве имени файла я просто использовал example.zip.
Думаю, мне не хватает чего-то, что связано с методом вызова Rack :: Request (env).
Есть ли у кого-нибудь идеи, как обрабатывать загрузки в стойку? Или дать мне какие-нибудь подсказки для нового направления? Спасибо.
Rack::Multipart
, напримерparse_multipart
. Стоит ли внедрять другой код стойки? - person LiveNL   schedule 13.05.2016