Envie imagens para o Amazon S3 usando o Django

No momento, estou redimensionando imagens rapidamente quando um usuário faz o upload de uma foto. A imagem original é armazenada no Amazon S3 em um bucket chamado djangobucket. Dentro deste balde, contém milhares de pastas.

Cada pasta é nomeada após o usuário. Eu não tenho que me preocupar com a criação de buckets ou pastas, já que tudo isso é feito do lado do cliente.

Aqui está um diagrama:

djangobucket  ------------> bob ---------> picture1.jpg
                                           picture2.jpg
                                           picture3.jpg
                                           picture4.jpg

Como você pode ver, Bob tem muitas fotos. Uma vez que um usuário envia uma foto para o S3, eu faço o download através do Django através de um URL, nesse caso seria:http://s3.amazonaws.com/djangobucket/bob/picture1.jpg

Eu baixei a imagem e executei o processamento de imagens e salvei a imagem processada no meu servidor de aplicativos django.

Gostaria de enviar essa imagem processada de volta para a pasta de Bob para que ela possa ser acessada publicamente emhttp://s3.amazonaws.com/djangobucket/bob/picture1_processed.jpg

O cliente já tem acesso à chave amazon e à chave secreta para que ele possa fazer upload de fotos para esse intervalo. Todos os usuários no serviço usam as mesmas chaves. Eu também estarei usando as mesmas chaves.

Eu ouvi falar de algo chamado Boto, mas envolve a criação de Bucket e não tenho certeza de como fazer apenas a parte de upload. Estou preocupado apenas com o upload da imagem para a pasta de usuário apropriada.

Eu tenho pesquisado isso por horas, então eu recorri aos especialistas aqui.

Aqui está o meu código, apenas para que você possa entender melhor o que estou fazendo.

user = 'bob'

url = 'http://s3.amazonaws.com/djangobucket/bob/picture1.jpg'
filename = url.split('/')[-1].split('.')[0]

download_photo = urllib.urlretrieve(url, "/home/ubuntu/Desktop/Resized_Images/%s.jpg" % (filename))
downloaded_photo = Image.open("/home/ubuntu/Desktop/Resized_Images/%s.jpg" % (filename))

resized_photo = downloaded_photo.resize((300, 300), Image.ANTIALIAS)
new_filename = filename + "_processed"

resized_photo.save("/home/ubuntu/Desktop/Resized_Images/%s.jpg" % (new_filename)) 

Eu gostaria de enviar a foto redimensionada salva em / home / ubuntu / Desktop / Resized_Images / para a pasta de Bob no djangobucket no Amazon S3 e torná-la publicamente visível.

Obrigado pela ajuda.

EDITAR Eu encontrei este link:http://www.laurentluce.com/posts/upload-and-download-files-tofrom-amazon-s3-using-pythondjango/

Não é bem como usá-lo para o meu caso, mas acho que estou no caminho certo.

questionAnswers(1)

yourAnswerToTheQuestion