2012-06-12 16 views
7

Sto costruendo un'API di manipolazione di file in Rails e devo essere in grado di accedervi tramite una gemma separata. L'API utilizza Carrierwave e quel pezzo funziona senza problemi. Quello che non capisco come fare è prendere un file arbitrario e consegnarlo all'API dall'interfaccia gem.Come caricare un file tramite Carrierwave su un'API JSON?

Carrierwave utilizza i propri file come risultato di File.open('foo.jpg') o come POST da un campo di file. Non sono davvero sicuro di cosa stia facendo, per serializzare il file e inviarlo.

Come faccio a prendere il contenuto di un file e trasformarlo in qualcosa che posso passare e pubblicare tramite JSON?

+0

Vuoi dire l'API riceve roba come JSON invece di parametri di modulo? –

+0

Esatto. L'API riceverà oggetti in JSON, poiché è destinata a supportare un'interfaccia della riga di comando anziché un'interfaccia basata su browser. –

risposta

4

Quando un modulo HTML esegue il POST di un file, ciò che effettivamente accade è una parte speciale di HTTP chiamata richiesta multipart. In effetti, il file viene "allegato" alla richiesta.

Alla domanda verrà data risposta la libreria che si sta utilizzando per POST il JSON per la propria API. Allegare un file a una richiesta dovrebbe essere abbastanza comune, ma non tutte le librerie potrebbero supportarlo.

This stack overflow article seems to give some good indications of how to do it.

+0

Questo è un ottimo modo per realizzare le cose che stavo cercando di realizzare. Sembra che la domanda originale inizi con una cattiva premessa: un file non sarebbe mai serializzato su un oggetto JSON, ma si trova in una parte completamente diversa del protocollo. In ogni caso, questa libreria mi porta ad un ottimo inizio, e se mi chiedo come fa quello che fa posso sempre colpirlo con il codice sorgente. Grazie! –

+0

Esattamente. In particolare, è possibile incorporare un file nel JSON utilizzando la codifica base64 o qualche altra codifica ASCII, tuttavia non consiglierei quel percorso a meno che non ne abbia davvero bisogno. –

Problemi correlati