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ď č. 1Vytvoril 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