【发布时间】:2023-03-30 20:16:01
【问题描述】:
我正在尝试创建一个允许将图片上传到我的 S3 存储桶的端点,上传 PNG 图像时一切似乎都正常工作(JPEG 图像不起作用,但这是另一个问题),但是如果我尝试在浏览器中可视化上传的图像,它只是显示为一个黑色的页面,中间有一个灰色的小方块。如果我检查上传文件的元数据,S3的Content-Type正确设置为image/png,所以我不知道会发生什么。
我将 base64 图像作为多部分表单数据传递,然后用它解码
for part in multipart_data.parts:
file = base64.b64encode(part.content).decode()
之后我使用 mimetypes guess_all_extensions() 函数来获取文件的扩展名。我的上传代码如下所示:
s3_client = boto3.client("s3")
default_bucket = "some_bucket"
try:
s3_client.put_object(
Body=file,
Bucket=default_bucket,
Key=file_key,
ContentType=content_type
)
except botocore.exceptions.ClientError as error:
print(f"error: {error}")
从 s3 管理控制台打开的图像如下所示: 1
【问题讨论】:
-
您是否检查了浏览器中的开发者控制台中的错误消息?
-
是的,我没有看到任何错误消息,我正在使用无服务器并且请求的状态是 200。图像已正确上传,似乎与格式或类似的东西。
-
如果您通过AWS控制台下载文件,即不要点击链接在浏览器中打开图片,而是点击下载按钮。下载到本地后,可以用图片查看器打开吗?
标签: python amazon-web-services amazon-s3 boto3