viernes, enero 16, 2009

Recibir archivo, y devolver archivo procesado con GAE

Para probar Google App Engine, he hecho una aplicación bastante chorra: myclimbinglog.
El código está en google code.

Si, ya se que el diseño de la página es supercutre, pero ahora me interesaba probar la funcionalidad....
Como no desarrollador web que soy, la mayor duda era como enviar el archivo a procesar y el resultado.

Para enviarlo es muy sencillo:

.../...
form action="/process" enctype="multipart/form-data" method="post"
.../...
input name="file" type="file"
.../...


Para devolver el resultado...

En primer lugar indicar que el framework que se usa es webapp y se instala en (google_appengine/google/appengine/ext/webapp).
En el RequestHandle, vamos a tener un atributo de tipo Response.
Pues bien, la respuesta va a tener un atributo headers que es un diccionario. En él tendremos por defecto el siguiente valor:


self.headers['Content-Type'] = 'text/html; charset=utf-8'


Si no hacemso nada mas, podemos devolver el contenido procesado como html, tal que:


self.response.out.write(cgi.escape(bufferSalida))


Pero si queremos devolver el contenido con los correctos mimetypes (y que el browser los trae como tenga configurado, debemos hacer alto tal que):


self.response.headers['Content-Type'] = '%s; charset=utf-8' % str(tipo)
self.response.out.write(bufferSalida)


Donde tipo, será un mimetype ( 'text/xml', 'text/plain', 'text/csv', ...)

No hay comentarios: