Я пытаюсь вернуть 1px gif из метода AWS API Gateway.AWS Gateway API base64Decode производит искаженный двоичный файл?
Поскольку двоичные данные в настоящее время поддерживается, могу вернуть изображение/GIF с помощью следующей «Integration Response» отображение:
$util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")
Однако, когда я смотрю на это в Chrome, я вижу следующее бинарное возвращается :
Вместо:
Может ли кто-нибудь помочь мне понять, почему это искажено и неправильной длины? Или что я могу сделать, чтобы вернуть правильный двоичный файл? Есть ли еще что-то, что я всегда мог бы вернуть 1px gif без использования функции base64Decode?
Большое спасибо заранее, это вызывает у меня много боли!
EDIT
Это один получает незнакомца. Похоже, проблема связана не с base64Decode, а с общей обработкой двоичного кода. Я добавил бэкэнд Lambda (ранее я использовал Firehose) после this blog post и этого Stack Overflow question. Я установил изображения как binaryMediaType в соответствии с этим documentation page.
Это позвольте мне передать следующее изображение/BMP пиксел из Lambda через API шлюза, и он работает правильно:
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 });
};
Однако следующие изображения, представляющие изображение/PNG или изображение/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, но я надеялся, что это будет установлено с бинарной поддержкой шлюза по API. К сожалению, файл image/bmp не работает для моего использования, так как он не может быть прозрачным ...
В случае, если это помогает кому-либо, this has been a good tool для преобразования между base64 и hex.
Что заголовки ответа выглядеть в Chrome? –
Спасибо, заголовки ответа: 'HTTP/1.1 200 OK Content-Type: изображение/GIF Content-Length: 52 соединения: держать-жив Дата: Понедельник, 2 января 2017 22:08:55 GMT х-AMZN-RequestID: 0d3f620c-d138-11e6- 941a-0f16afc9bdc4 X-AMZN-трассировки-Id: Корень = 1-586acf77-93ce6c87faa62ee76758abf5 X-кэша: Мисс от CloudFront Via: 1.1 227087338674ca3d3d23a79539f2998b.cloudfront.net (CloudFront) X-Amz-Cf-Id: 9V1XUr1cPqjm7Bj2HOFfakLlFM5MWo_Ucuv9cdk35xsBz_xhcPvixQ = = ' И ответ возвращается как: ' данные: изображения/GIF; base64, R0lGODlhAQABAO +/vQAAAAAA77 + 977 + 977 + 9Ie +/vQQBAAAAACwAAAAAAQABAAACAUQAOw == ' – rjmurt
Что бэкенд для API шлюза? Это Лямбда? –