【问题标题】:Django storages S3 - Store existing fileDjango storages S3 - 存储现有文件
【发布时间】:2018-05-30 16:38:21
【问题描述】:

我有 django 1.11 和最新的 django-storages,设置了 S3 后端。

我正在尝试使用 AWS 图像链接作为起点以编程方式实例化 ImageFile。查看源代码/文档,我无法弄清楚如何做到这一点。

我假设我需要创建一个文件,并为它提供从没有域的 url 派生的路径,但我找不到确切的方法。

这样做的最终目的是以编程方式创建 wagtail Image 对象,指向 S3 图像(因此将新的 ImageFile 传递给图像的 Imagefield)。我拥有存储图像的 S3 存储桶。

图片上传正常,系统设置正确。

更新

为了澄清,我需要做与正常过程相反的事情。通常会向系统提供物理图像,然后创建ImageFile,然后将文件上传到S3,并将URL分配给File.url。我有 File.url 并需要一个 ImageFile 对象。

【问题讨论】:

    标签: django boto3 wagtail python-django-storages


    【解决方案1】:

    事实证明,在几个需要文件的模型中,当使用 DjangoStorages 时,我所要做的就是传递 AWS S3 对象键(所以不是 URL,只是对象键)。 当调用model.save() 时,会向S3 调用boto 以验证具有所提供密钥的对象是否存在,并保存该项目。

    【讨论】:

    • 为了澄清,这意味着:my_model.upload = "s3 object key.jpg" 而不是 my_model.upload.save(...)
    • 我正在尝试做同样的事情,但我遇到了一个错误。 djfile = Media.objects.create(asset_title='Title 1", image_file=my_bucket_object) 生成 AttributeError: 's3.ObjectSummary' object has no attribute '_committed'
    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 2016-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-09-15
    • 2013-01-08
    • 1970-01-01
    相关资源
    最近更新 更多