【问题标题】:AWS API Gateway return binary file from base64 browser errorAWS API Gateway 从 base64 浏览器错误返回二进制文件
【发布时间】: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


【解决方案1】:

最后我发现,目前你无法通过web控制台解决这个问题。正如 daveg 所建议的,您必须使用 AWS CLI 更改为设置 contentHandling = CONVERT_TO_TEXT。正如我所说的,你不能在网页界面上进行的操作。

欲了解更多信息:aws forum thread

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 2019-02-08
    • 2023-03-05
    • 1970-01-01
    • 2019-06-19
    • 2018-11-28
    • 1970-01-01
    • 2017-05-16
    • 2016-02-10
    相关资源
    最近更新 更多