【发布时间】:2017-05-16 17:18:38
【问题描述】:
我正在尝试从 AWS API Gateway 方法返回一个 1px 的 gif。
由于现在支持二进制数据,我使用以下“集成响应”映射返回图像/gif:
$util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")
但是,当我在 Chrome 中查看此内容时,我看到返回以下二进制文件:
代替:
谁能帮我理解为什么这是乱码和错误的长度?或者我能做些什么来返回正确的二进制文件?在不使用 base64Decode 函数的情况下,我可以随时返回这个 1px 的 gif 吗?
非常感谢,这让我很痛苦!
编辑
这个人变得陌生了。看起来问题不在于 base64Decode,而在于二进制的一般处理。我在this blog post 和这个Stack Overflow question 之后添加了一个 Lambda 后端(以前我使用的是 Firehose)。我根据 documentation page 将图像设置为 binaryMediaType。
这让我可以通过网关 API 从 Lambda 传递以下图像/bmp 像素,并且它可以正常工作:
exports.handler = function(event, context) {
var imageHex = "\x42\x4d\x3c\x00\x00\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x18\x00\x00\x00\x00\x00\x06\x00\x00\x00\x27\x00\x00\x00\x27\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x00\x00";
context.done(null, { "body":imageHex });
};
但是,以下表示 image/png 或 image/gif 的图像在通过时会出现乱码:
exports.handler = function(event, context) {
//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\xff\xff\xff\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x01\x44\x00\x3b";
//var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\xff\xff\xff\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b";
var imageHex = "\x47\x49\x46\x38\x39\x61\x01\x00\x01\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x21\xf9\x04\x01\x00\x00\x00\x00\x2c\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02\x44\x01\x00\x3b\x0a"
context.done(null, { "body":imageHex });
};
这似乎与another Stack Overflow question 是同一个问题,但我希望通过 Gateway API 二进制支持来解决这个问题。不幸的是 image/bmp 不适用于我的用例,因为它不能是透明的......
如果它对任何人有帮助,请this has been a good tool 在 base64 和十六进制之间进行转换。
【问题讨论】:
-
Chrome 中的响应标头是什么样的?
-
谢谢,响应头是:
HTTP/1.1 200 OK Content-Type: image/gif Content-Length: 52 Connection: keep-alive Date: Mon, 02 Jan 2017 22:08:55 GMT x-amzn-RequestId: 0d3f620c-d138-11e6-941a-0f16afc9bdc4 X-Amzn-Trace-Id: Root=1-586acf77-93ce6c87faa62ee76758abf5 X-Cache: Miss from cloudfront Via: 1.1 227087338674ca3d3d23a79539f2998b.cloudfront.net (CloudFront) X-Amz-Cf-Id: 9V1XUr1cPqjm7Bj2HOFfakLlFM5MWo_Ucuv9cdk35xsBz_xhcPvixQ==响应返回为:data:image/gif;base64,R0lGODlhAQABAO+/vQAAAAAA77+977+977+9Ie+/vQQBAAAAACwAAAAAAQABAAACAUQAOw== -
您的 API 网关的后端是什么?是 Lambda 吗?
标签: amazon-web-services aws-api-gateway