[pyar] Tengo una idea, tengo una idea??

Germán L. Osella Massa gosella en gmail.com
Mar Ene 22 01:29:40 ART 2013


El día 20 de enero de 2013 20:11, Martin Cerdeira
<martincerdeira en gmail.com> escribió:
> 2013/1/19 Mariano Garcia Berrotarán <garcia.berrotaran en gmail.com>
>>
>> Hola Martin!,
>>
>> Podes hacer esto:
>>
>>     response_file = StringIO.StringIO()
>>     img2.save(response_file, "PNG")
>>     return HTTPResponse(response_file, **headers)
>>
>> obviamente vas a tener que manejar la extension y eso.
>>
>> Proba y avisanos como te va, Saludos!
>
>
> Como va? Sabés que probé de esa forma, pero no me funciona.
>
> Así sí funciona (pero obviament no me sirve, lo hice para tener alguna pista
> mas):
>
>     tmp = "temporal.jpg"
>     img2.save('tmp/' + tmp)
>
>     r_file = open('tmp/' + tmp, 'rb')
>
>     return HTTPResponse(r_file, **headers)
>
> Es decir, si lo guardo al disco y le mando el resultado del open, va. Pero,
> el objeto "file like" que le devuelve StringIO, parece que no le gusta...

Buenas!

Me parece que lo que está faltando es retroceder el StringIO al
comienzo del mismo para que el HTTPResponse pueda leer todo lo
escrito.
Miren esto:

>>> import StringIO
>>> f = StringIO.StringIO()
>>> f.write('123456789+' * 10)
>>> f.read()  # No va a devolver nada porque está al final del "archivo"
''
>>> f.seek(0)  # Volviendo para atrás
>>> f.read()   # Ahora si lee todo lo escrito...
'123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+'

Yo probaría con esto:

response_file = StringIO.StringIO()
img2.save(response_file, "PNG")
img2.seek(0)
return HTTPResponse(response_file, **headers)

Saludos,
Germán



More information about the pyar mailing list