Шлюз AWS API base64Decode создает искаженный двоичный файл?
Я пытаюсь вернуть 1px gif из метода AWS API Gateway.
Поскольку двоичные данные теперь поддерживаются, я возвращаю изображение / gif, используя следующее отображение «Ответ интеграции»:
$util.base64Decode("R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")
Однако, когда я смотрю на это в Chrome, я вижу, что возвращается следующий двоичный файл:
Вместо:
Может ли кто-нибудь помочь мне понять, почему это искажено и неправильной длины? Или что я мог сделать, чтобы вернуть правильный двоичный файл? Есть ли что-то еще, что я всегда мог вернуть этот 1px GIF без использования функции base64Decode?
Большое спасибо заранее, это причиняет мне много боли!
РЕДАКТИРОВАТЬ
Этот становится незнакомцем. Похоже, проблема не в base64Decode, а в общей обработке двоичного кода. Я добавил лямбда-бэкэнд (ранее я использовал Firehose) послеэтот блог и этоВопрос переполнения стека, Я устанавливаю изображения как двоичныйMediaType в соответствии с этимстраница документации.
Это позволило мне передать следующий пиксель изображения / 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 });
};
Кажется, это та же проблема, что идругой вопрос переполнения стека, но я надеялся, что это будет исправлено с помощью бинарной поддержки API шлюза. К сожалению, image / bmp не работает для моего варианта использования, так как он не может быть прозрачным ...
Если это кому-нибудь поможет,это был хороший инструмент для преобразования между base64 и hex.