2009-08-12 9 views
6

Estoy utilizando el cliente para un formulario de varias partes para enviar datos a un servicio web tranquilo (es el servicio de codificación de video de Panda). El truco, sin embargo, es que el archivo que paso al restclient (rama Technoweenie) proviene de mi propio formulario que envía un usuario.Uso del cliente de repositorio con publicaciones multiparte

Así que, caminemos por esto. Un usuario publica un archivo en mi aplicación de rieles. En mi controlador, recibe el archivo de params [: archivo]. Luego quiero pasar los parámetros [: file] a Panda usando RestClient.

El error que estoy recibiendo en el servidor de Panda sigue. Observé que el parámetro de archivo en el seguimiento de la pila también está en una cadena (que supongo que Panda se está convirtiendo en una cadena para obtener una stack stack más agradable).

~ 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' 
+0

¿Puede decirnos cómo averigua este problema? –

Respuesta

1

Dudo que realmente pueda pasar un parámetro de carga de estilo CGI de Rails a restclient y esperar que funcione.

Una carga normal en Rails tendría algunos atributos adicionales que no pertenecen a un recurso publicado (como el nombre de archivo original, etc.) y una carga de Rails contiene un IO con los datos de archivo reales. Además, un objeto de carga de archivos en Rails podría ser un controlador Tempfile y podría ser un StringIO, dependiendo del tamaño de la carga.

Lo que debe hacer efectivamente es "volver a empaquetar" su carga para que el cliente de reposo la maneje correctamente, y pasar el objeto Tempfile reempaquetado y rebobinado a restclient. Tal vez pueda salirse con la suya simplemente al elegir el objeto de carga en lugar de todo el params [: archivo]

1

confirmar que su acción restclient puede guardar localmente primera. Si la acción no se puede guardar localmente, entonces tendrás una mejor idea de dónde buscar mientras se solucionan los problemas.

Cuestiones relacionadas