Aqui vai uma dica bem simples para quem utiliza o Amazon S3 e precisa salvar imagens obtidas de alguma URL. Em primeiro lugar, recomendo o uso do django-storages, que faz parte do django-skel (que eu também recomendo).
Esse código funciona com outros storages, mas eu testei apenas com o storage padrão (local) e S3BotoStorage. Qualquer comentário a respeito de outros storages será muito bem-vindo. ;)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
from django.core.files.storage import default_storage from django.core.files.base import ContentFile import os import uuid import urllib def save_image_from_url(url): path = 'uploads/' try: filename = os.path.basename(url) extension = os.path.splitext(filename)[1] format = uuid.uuid1().hex + extension path = os.path.join(path, format) f = urllib.urlopen(url) saved = default_storage.save(path, ContentFile(f.read())) return saved except IOError, e: print e |
Utilizei o uuid1 para gerar um nome de arquivo único. Qualquer dúvida sinta-se à vontade para perguntar.
Também criei um Gist com esse código: https://gist.github.com/luish/6127082.
Compartilhe:
0sem comentários ainda