2013-06-10 2 views
0

Я использую django-хранилища для проекта, размещенного на Heroku. У меня настроены настройки django-хранилищ, и теперь я просто старую старую папку с S3.Как сохранить изображение, расположенное по адресу URL-адреса S3, с Django на Heroku?

Я хочу программно взять изображение, расположенное по URL-адресу, и загрузить его на S3 и связать его с моделью.

Я знаю, как скачивать файлы с URL-адреса с urlib2 или запросами.

Что я хочу знать, так это как лучше всего получить этот образ на S3 и использовать его для использования с моей моделью и связанными с ней шаблонами. Размер файла неопределен, но, вероятно, всегда будет меньше 10 МБ.

Мои вопросы сводятся к:

  • Как получить изображение, расположенную на URL на S3?
  • Как только изображение находится на S3, как мне связать это изображение с моделью?
  • Из-за каких-либо неотъемлемых ограничений на Heroku существует ли способ избежать сохранения в хранилище Heroku и «передать» файл прямо на S3 ... или это не проблема?

ответ

3

У меня была такая же проблема, я использую следующий метод, чтобы сохранить изображение

from boto.s3.key import Key 
import urllib2 
import StringIO 
from django.conf import settings 

def save_image_s3(self, img_url, img_name): 
    """Saves the image in img_url into S3 with the name img_name""" 
    conn = boto.connect_s3(settings.AWS_ACCESS_KEY_ID, settings.AWS_SECRET_ACCESS_KEY) 
    bucket = conn.get_bucket(settings.AWS_STORAGE_BUCKET_NAME) 
    k = Key(bucket) 
    k.key = img_name 
    fp = StringIO.StringIO(urllib2.urlopen(img_url).read()) 
    k.set_contents_from_file(fp) 
    return img_name 
Смежные вопросы