Я сейчас изменяю размеры изображений на лету, когда пользователь загружает картинку. Исходное изображение хранится на Amazon S3 в ковше под названием djangobucket. Внутри этого ведра содержится тысячи папок.Загрузить изображения в Amazon S3 с помощью Django
Каждая папка названа в честь пользователя. Мне не нужно беспокоиться о создании или создании корзин, поскольку все это обрабатывается с клиентской стороны.
Вот схема:
djangobucket ------------> bob ---------> picture1.jpg
picture2.jpg
picture3.jpg
picture4.jpg
Как вы можете видеть, у Боба есть много фотографий. Когда пользователь загружает картинку в S3, я загружаю ее через Django по URL-адресу, в этом случае это будет: http://s3.amazonaws.com/djangobucket/bob/picture1.jpg
Скачайте изображение и выполните обработку изображения и сохраните обработанное изображение на моем сервере приложений django.
Я хотел бы послать это обработанное изображение обратно в папку Боба, так что он может быть публично достигнут на http://s3.amazonaws.com/djangobucket/bob/picture1_processed.jpg
клиента уже имеет доступ к ключу амазонки и секретному ключу, чтобы он или она может загружать фотографии в это ведро. Все пользователи службы используют одни и те же ключи. Я тоже буду использовать те же ключи.
Я слышал о чем-то, что называется Boto, но это связано с созданием Bucket, и я не уверен, как делать только часть загрузки. Меня беспокоит только загрузка изображения в соответствующую папку пользователя.
Я занимаюсь этим часами, поэтому я обратился к экспертам здесь.
Вот мой код, чтобы вы могли лучше понять, что я делаю.
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))
Я хотел бы послать малоформатной фотографии, сохраненные в/дома/Ubuntu/Desktop/Resized_Images/ в папку Боба в djangobucket на Amazon S3 и сделать его общедоступным.
Благодарим за помощь.
EDIT Я нашел эту ссылку: http://www.laurentluce.com/posts/upload-and-download-files-tofrom-amazon-s3-using-pythondjango/
Не совсем, как использовать его для моего дела, но я думаю, что я нахожусь на правильном пути.
спасибо, это сработало как шарм. – noahandthewhale