/ / (Viacdielne) nahrávanie zipsov v ruby ​​webmachine spracovanom rackom - ruby, rack, webmachine

(Viacdielne) nahrávanie na zips v ruby ​​webmachine spracovanom pomocou

Vytváram formulár na nahrávanie zipsov v aplikácii ruby ​​webmachine. Moja predstava je, že budem mať upload cez môj backend, kde môžem pridať nejaké ďalšie parametre a potom ich nahrať do služby Amazon s3 pomocou RestClient.

Úspešne som vytvoril priame nahranie (webový formulárový príspevok) na s3bucket, ale týmto spôsobom nedokážem spracovať premenné, ktoré sú potrebné v žiadosti, tak, ako chcem.

„Skúšal som niekoľko vecí, ale nemôžem prísť na to, ako vybaviť žiadosť, hneď ako sa dostane do môjho backendu. "Vytvoril som zdroj a ladím priamo v process_post metóda.

môj @request premenná predstavuje a Webmachine::Request, s Webmachine::Adapters::Rack::RequestBody a a Rack::Request, ale nemôžem z neho dostať súbor, aby som ho mohol použiť ako vstup pre svoju požiadavku RestClient.

Myslím; @request.body.to_s a @request.body.to_io, nejakým spôsobom predstavujú nahraný súbor a pokúsil som sa ich použiť ako vstup pre Rack::Multipart metódy, ale to mi súbor nedáva.

Skúšal som tiež pracovať s drahokamom rack-raw-upload, ale nemôžem „napodobniť“ niečo iné ako „application / x-www-form-urlencoded“ alebo viacdielne. Ja to výslovne nastavím na; application/octet-stream

Veci ako File.new(filename, "rb") mi dal `rrno :: ENOENT: Žiadny taký súbor alebo adresár @ rb_sysopen". Pre názov súboru som použil "example.zip".

Myslím, že mi chýba niečo, čo má spoločné s metódou volania Rack :: Request (env).

Má niekto nápad, ako naložiť s nahrávaním do racku? Alebo mi daj nejaké náznaky nového smeru? Vďaka.

odpovede:

1 pre odpoveď č. 1

Vytvoril som zoznam, ktorý ukazuje, ako načítať viacdielny prúd. Aby ste získali nahraný súbor, budete potrebovať ďalšiu analýzu.

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