在 Django 中,仅生成 s3 客户端 generate_presigned_post,内容类型为 mp4 文件上传
Posted
技术标签:
【中文标题】在 Django 中,仅生成 s3 客户端 generate_presigned_post,内容类型为 mp4 文件上传【英文标题】:In Django Generate only s3 client generate_presigned_post with content type for mp4 file upload 【发布时间】:2021-07-26 14:07:06 【问题描述】:上传视频(.mp4)文件后,S3 元数据设置其 Content-Type : binary/octet-stream 什么时候让我的浏览器强制下载文件而不是播放为了让它在浏览器中播放,我需要更改该内容类型以编程方式 到 django
中的“video/mp4”【问题讨论】:
【参考方案1】:经过大量时间后,我得出了解决方案:
def presign_post_S3_url(self, key=None, is_public=False):
acl = 'private'
if is_public:
acl = 'public-read'
fields = "acl": acl, "Content-Type": "video/mp4"
conditions = [
"acl": acl,
["starts-with", "$Content-Type", ""]
]
if key is None:
return ""
##s3_client is boto3.client object
s3_client = self.get_s3_client()
if s3_client is None:
return ""
data = s3_client.generate_presigned_post(
Bucket=self.bucket,
Key=key,
Fields=fields,
Conditions=conditions
)
return data
【讨论】:
以上是关于在 Django 中,仅生成 s3 客户端 generate_presigned_post,内容类型为 mp4 文件上传的主要内容,如果未能解决你的问题,请参考以下文章
Django collectstatic 无法使用 S3 进行生产,但相同的设置在本地工作