【发布时间】:2020-11-17 23:09:36
【问题描述】:
我的视频文件可以成功上传。但我无法在浏览器中播放。 当我要求它自动下载时。 我也使用了“内容类型:视频/mp4”,但是当我请求它的内容类型是二进制/八位字节流
以下是我的python代码。
def get_bucket_sign_url(upload_path):
try:
presigned_post = s3_client.generate_presigned_post(
Bucket=settings.AWS_STORAGE_BUCKET_NAME,
Key=upload_path",
Fields={"acl": "public-read", "Content-Type": 'video/mp4'},
Conditions=[
{"acl": "public-read"},
{"Content-Type": 'video/mp4'},
{"success_action_status": "200"}
],
ExpiresIn=settings.S3_MAX_TIMEOUT # 3600
)
return presigned_post
except Exception:
return {}
以下是我的 curl 代码。
curl --location --request POST 'https://******.s3.amazonaws.com/' \
--form 'key=media/customer_videos/5556.mp4' \
--form 'file=@/home/user/Videos/ssm.mp4' \
--form 'acl=public-read' \
--form 'content-type=video/mp4' \
--form 'AWSAccessKeyId=*******' \
--form 'policy=******' \
--form 'signature=******'
【问题讨论】:
-
您是否尝试过使用 PUT 而不是 POST ?尝试可能只是一件愚蠢的事情,但我通常在将对象添加到 S3 时使用 PUT 请求。见这里:docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
-
您如何访问您的视频?通过公共 URL 或预签名 URL?后者可能会指定自己的 http 标头,例如 content-type。此外,请检查您的自定义帐户或存储桶级别政策。
-
不确定我是否迟到了,但您必须为流式传输设置 CloudFront。 docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/…