【问题标题】:How to save image located at URL to S3 with Django on Heroku?如何使用 Heroku 上的 Django 将位于 URL 的图像保存到 S3?
【发布时间】:2013-06-06 10:50:32
【问题描述】:

我正在将 django-storages 用于 Heroku 上托管的项目。我已经配置了 django-storages,现在可以从 S3 提供静态文件了。

我想以编程方式获取位于 URL 的图像并将其上传到 S3 并将其与模型相关联。

我知道如何使用 urllib2 或 requests 从 url 下载文件。

我想知道如何最好地将该图像放到 S3 上,并让我可以将其与我的模型和相关模板一起使用。文件大小不确定,但可能总是小于 10MB。

我的问题归结为:

  • 如何将位于某个 url 的图像放到 S3 上?
  • 图像在 S3 上后,如何将该图像与模型相关联?
  • 由于 Heroku 的任何固有限制,有没有办法避免保存到 Heroku 存储并将文件“流式传输”到 S3...或者这不是问题吗?

【问题讨论】:

    标签: django heroku amazon-s3 django-storage


    【解决方案1】:

    我也遇到了同样的问题,我用下面的方法保存图片

    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
    

    【讨论】:

    • 但它只会将文件上传到s3,但是如何链接到模型?例如。到 ImageField?
    猜你喜欢
    • 2015-05-16
    • 2013-06-24
    • 1970-01-01
    • 2017-05-07
    • 2013-12-20
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多