Domanda

sto usando restclient per una forma più parti per inviare i dati a un servizio Web ristoratore (il suo servizio di codifica video Panda). Il trucco, però, è che il file sto passando in restclient (ramo Technoweenie) proviene dalla mia forma che un utente invia.

Quindi, consente di passeggiata attraverso questo. Un utente inserisce un file alla mia applicazione Rails. Nel mio controller, che riceve il file da params [: File]. Allora voglio passare params [: File]. Verso il basso per Panda utilizzando RestClient

L'errore che sto ottenendo è sul server Panda segue. Ho notato che il param file nella traccia dello stack è in una stringa come bene (che presumo è Panda trasformando in una stringa per uno stacktrace più).

 ~ Started request handling: Wed Aug 12 18:05:15 +0000 2009
 ~ Params: {"format"=>"html", "multipart"=>"true", "account_key"=>"SECURE_KEY", "action"=>"upload", "id"=>"SECURE_ID", "controller"=>"videos", "file"=>"#<File:0xcf02ca4>"}
 ~ 9bfb1750-6998-012c-4509-12313900b0f6: (500 returned to client) InternalServerErrorcan't convert nil into String
/var/local/www/panda/app/models/video.rb:246:in `extname'
/var/local/www/panda/app/models/video.rb:246:in `initial_processing'
/var/local/www/panda/app/controllers/videos.rb:79:in `upload'
È stato utile?

Soluzione

dubito che si possa davvero passare un caricamento param CGI-style da Rails in restclient e si aspettano di lavorare.

Il caricamento regolare in Rails avrebbe abbastanza alcuni attributi extra che non appartengono a una risorsa pubblicato (come il nome del file originale, e così via), e il caricamento di Rails contiene un IO con i dati del file effettivi. Anche un oggetto di upload di file in Rails potrebbe essere una maniglia File Temporanei e potrebbe essere uno StringIO -. A seconda delle dimensioni del caricamento

Quello che effettivamente dovete fare è "confezionano" il caricamento per restclient gestirlo correttamente, e passare l'oggetto File Temporanei riconfezionato e riavvolto a restclient. Forse si può uscire solo con la raccolta l'oggetto di upload in sé, invece di tutto il params [: File]

Altri suggerimenti

Confermare che la vostra azione restclient può salvare in locale prima. Se l'azione non può salvare in locale, allora si avrà una migliore idea di dove cercare durante le riprese guai.

Sembra che il problema è con il distacco del resto-client del file, controlla un metodo alternativo per la pubblicazione come marciapiede.

Un sacco di esempi per la pubblicazione di dati del modulo a più parti su questa questione: rubino:? come inviare un file tramite HTTP come multipart / form-data

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top