[Python-es] Guardar y recuperar imagen desde Postgres

Marcos Alcazar marcos.alcazar en gmail.com
Dom Feb 3 15:10:54 CET 2008


Hice lo que me propusiste, heredando de HTTPContent, y pude comprobar
mediante el Live HTTP Headers que la cabecera es correcta, me la cambia a
Content-type: image/jpg. El problema debe estar en que el write, aun el de
HTTPContent, me transforma lo que mando a string, y esto parece ser el
problema. El tema esta en que no puedo corroborar si el cuerpo, o sea los
datos, son correctos, por la forma de representacion de los mismos.
Tambien hice la prueba de no guardar la imagen en la base, directamente
recibo la imagen en el controlador, y asi como esta la vuelvo a colocar en
la pagina, con lo que obtengo exactamente el mismo resultado.

Tambien estuve leyendo en la docum. de HTTPContent, y el metodo write dice
lo siguiente:
*write*(self, *args)Write to output.

Writes the arguments, which are turned to strings (with `str`)
and concatenated before being written to the response.
Unicode strings must be encoded before they can be written.Me quiere decir
algo de las cadenas Unicode, que las tengo que codificar antes de
escribirlas. Vendra por aca la mano? Como podria probar esto?

Saludos y mas gracias, Marcos


2008/2/2 Alberto Valverde <alberto en toscat.net>:

> Marcos Alcazar wrote:
> > Sip, asi es... He probado con write() y con 'image/jpeg'. Creo que es
> eso.
> > el write() o el writeln() me deben estar convirtiendo esos bytes en
> ascii o
> > algo por el estilo.
> >
> > Estoy un tanto atascado, no?
>
> Hmm, le he echado un ojo a las fuentes d ewebkit y parece que en vez de
> heredar de Page deberías heredar de HTTPContent directamente para
> producir salida que no sea HTML. Según el docstring:
>
> """Content producing HTTP servlet.
>
> HTTPContent is a type of HTTPServlet that is more convenient for
> Servlets which represent content generated in response to
> GET and POST requests. If you are generating HTML content, you
> you probably want your servlet to inherit from Page, which contains
> many HTML-related convenience methods.
>
> If you are generating non-HTML content, it is appropriate to inherit
> from this class directly.
> (...)
> """
>
> Así a ojo, tal vez algo así funcione:
>
> class MiControladorDeImagenes(HTTPResponse):
>    def defaultAction(self):
>        obj = get_mi_imagen()
>        # poner la cabecera content-type
>        self.write(obj.data)
>
> No uses writeln ya que inserta retornos de carro.
>
> Si sigues atascado podrías usar la extensión de firefox Live HTTP
> Headers o firebug o esnifar el tráfico para comprobar que las cabeceras
> y el cuerpo de la respuesta son correctas.
>
> Espero te ayude,
> Alberto
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>


Más información sobre la lista de distribución Python-es