【问题标题】:Django multiple media fields not being uploaded to S3Django 多个媒体字段未上传到 S3
【发布时间】:2020-04-21 09:00:22
【问题描述】:

我的模型中有多个媒体字段我刚刚将 media_thumbnail 添加到模型中,我基本上需要从视频中取出第一帧然后存储它。我使用了 Django 的内置 S3 上传机制,它默认发送到 settings.py 中定义的存储桶,例如 @ 987654321@ 等。仅当我不在模型实例中为缩略图创建字段时才有效。

正如您可能已经猜到的那样,我正在使用 django 作为我的后端,并且我已经将整个过程 docker 化了

models.py

media_path = models.FileField(blank=True, null=True)
media_thumbnail = models.ImageField(blank=True, null=True)

views.py

media = Media(
       media_path=file,
       media_thumbnail=thumbnail,
       media_type=request.data.get('med_type', None))

这是我用来从视频中生成缩略图的功能。

def generate_thumbnail(video):
    path = video.temporary_file_path()
    thumbnail = video.name.split('.')[0]
    thumbnail += "_thumbnail.jpg"
    filepath = os.path.join(os.getcwd(), thumbnail)
    try:
        (
            ffmpeg
            .input(path, ss="00:00:00.000")
            .filter('scale', 640, -1)
            .output(thumbnail, vframes=1)
            .run(capture_stdout=True, capture_stderr=True,overwrite_output=True)
        )
    except Exception as e:
        raise CustomException("someting went wrong", e)
    finally:
        with open(filepath) as f:
            myfile = ImageFile(f)
        os.remove(filepath)
    return myfile

我正在返回一个对象类型 <class 'django.core.files.images.ImageFile'>,它应该被上传到 S3。但是在我尝试向应该创建缩略图并将视频和缩略图都扔到 AWS S3 的特定端点发送请求后,我得到这是错误的。

    "result": {
        "success": false,
        "data": "Attempted access to '/code/somemedianame_thumbnail.jpg' denied."
    }
}

如果有什么可以帮助我的,请不要犹豫,我们非常欢迎回复

【问题讨论】:

    标签: python django docker amazon-s3 django-rest-framework


    【解决方案1】:

    【讨论】:

    猜你喜欢
    • 2016-02-21
    • 2021-12-12
    • 2012-10-05
    • 2019-07-01
    • 1970-01-01
    • 2012-10-24
    • 2021-04-26
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多