在 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 文件上传的主要内容,如果未能解决你的问题,请参考以下文章

GNU make:删除生成的文件时如何重建哨兵目标?

CSS 中的相对字体 URL 在 S3 上导致 403

Django collectstatic 无法使用 S3 进行生产,但相同的设置在本地工作

创建单个 IAM 用户以仅访问特定的 S3 存储桶

django-compressor、heroku、s3:请求已过期

AWS S3存储桶Django 3.0用户配置文件图像上传访问错误