【发布时间】: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