Django storages S3 - 存储现有文件

Django storages S3 - Store existing file

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

我正在尝试以编程方式实例化一个 ImageFile,使用 AWS 图像 link 作为起点。查看源代码/文档,我无法弄清楚如何执行此操作。

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

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

上传图片工作正常,因此系统设置正确。

更新

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

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