estoy evitando la creación de archivos en el disco, esto es lo que tengo hasta ahora:función para crear un archivo zip en la memoria y la de regreso si lo
def get_zip(request):
import zipfile, StringIO
i = open('picture.jpg', 'rb').read()
o = StringIO.StringIO()
zf = zipfile.ZipFile(o, mode='w')
zf.writestr('picture.jpg', i)
zf.close()
o.seek(0)
response = HttpResponse(o.read())
o.close()
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = "attachment; filename=\"picture.zip\""
return response
¿Cree que es correcto-elegante- lo suficientemente pitónico? ¿Alguna mejor forma de hacerlo?
Gracias!
Si es correcto o no solo puede decir que solo usted sabe lo que se supone que debe hacer :) La elegancia es subjetiva, pero realmente podría funcionar con algunos espacios en blanco y tal vez se divida en múltiples funciones. También es probable que desee asegurarse de que el archivo esté cerrado en caso de errores, puede hacerlo con try-finally o con la instrucción 'with'. – Skurmedel
Me gustaría señalar que, en general, no desea comprimir archivos JPEG porque ya están comprimidos. – Gabe