amazon-s3 - Boto3 ContentDisposition 内联不起作用

标签 amazon-s3 django-rest-framework boto3

我在 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/

相关文章:

django - 查看 django Rest Framework 中 post_save 中的对象更改

python - Django - 无法显示媒体文件夹内的文件夹中的图像

python - 在整数字段的 django-rest-framework 验证器中强制整数类型

amazon-web-services - 使用 boto3 invoke() 时获取 AWS Lambda 响应

amazon-web-services - aws 网络 elb 不生成日志

json - Golang从S3读取JSON到内存中的结构

amazon-s3 - 在 S3 服务器上的摘要上运行 TensorBoard

amazon-web-services - AWS API Gateway - Lambda - 内部服务器错误

python-3.x - boto3 和 dynamodb-local 的 batch_write 操作极其缓慢

python - 如何在 EC2 实例中使用 boto3