我在 django-restfrmework 项目中使用 boto3 将图像上传到亚马逊。但我面临问题。每当我在浏览器中输入网址时,我的图像就会自动开始下载。我设置了属性 ContentDisposition='inline',但仍然下载图像。这有什么技巧吗?
session = boto3.Session(
aws_access_key_id=YOUR_ACCESS_KEY,
aws_secret_access_key=YOUR_SECRET_KEY,
region_name=YOUR_AWS_REGION
)
s3 = session.resource('s3')
bucket = s3.Bucket(AWS_BUCKET_NAME)
bucket.put_object(Key=image_name, Body=file, ACL='public-read', ContentDisposition='inline')
最佳答案
当您检查s3存储桶中上传的图像文件的属性并转到其中的MetaData时,您将看到两个键,一个是ContentDisposition:inline,另一个是Content-Type:binary/octet-stream。因此,您的文件正在下载而不是内联 View ,因为只要缺少 ContentType,默认情况下它就会设置为 s3 存储桶中的二进制/八位字节流,这是一种可下载的文件类型。所以你只需将其更正为 image/jpeg。
替换:
bucket.put_object(Key=image_name, Body=file, ACL='public-read', ContentDisposition='inline')
致:
bucket.put_object(Key=image_name, Body=file, ACL='public-read', ContentDisposition='inline', ContentType='image/jpeg')
我希望这一切顺利。
关于amazon-s3 - Boto3 ContentDisposition 内联不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56337355/