【发布时间】:2017-06-30 20:30:34
【问题描述】:
我在 python 2.7 中创建了一个接收 id 的 AWS lambda, 从 s3 存储桶中检索文件并将其转换为 base64:
response = s3.Object( s3_bucket, r['prefix'] + str( id) ).get()
data = base64.b64encode( response['Body'].read())
return data
一切正常,生成的base64经过测试并正确。这是一个jpeg。
现在在 api 网关上:
- 创建 API
- 添加到 Binary 支持二进制媒体类型:image/jpeg
- 为资源添加 GET 方法。
- 添加方法响应 HTTP 状态:200 模型:image/jpeg => 空
- 在“集成响应”状态 200 >“正文映射模板”中添加 Content-Type:= image/jpeg
使用此模板:
$util.base64Decode($input.body)
部署 API、测试...以及 浏览器提示:图片无法显示,因为有错误。
我尝试了一百个不同的版本,但没有结果。我的错误是什么?
【问题讨论】:
-
目前尚不清楚为什么要将图像返回为 base64,但假设你有你的理由,你不需要添加类似
Content-Encoding: base64响应头的东西,以便浏览器了解什么它在处理? -
lambda 函数返回一个 Base64 图像。我希望 api 网关返回一个二进制文件。为此我使用
$util.base64Decode($input.body),但效果不佳。 -
抱歉,我之前误读了您的问题。
标签: image amazon-web-services amazon-s3