# #http #go #aws-lambda #aws-api-gateway
Вопрос:
Я пытаюсь написать лямбду, которая вернет a .WAV-файл в виде фрагментов по HTTP. У меня есть мои фактические данные в байтовом срезе ( outputPayload [] byte
), и я пытаюсь передать их обратно. Хотя запрос, похоже, выполняется, полученный ответ отличается по длине от того, что я ожидаю, и, похоже, поврежден. Вот мой код:
//Create the necessary headers responseHeader := make(map[string]string) responseHeader["Accept-Ranges"] = "bytes" responseHeader["Content-Range"] = fmt.Sprintf("%s/%d", rangeRequired, fileSize) responseHeader["Content-Type"] = fileType // this will be "audio/wav" responseHeader["Content-Length"] = fmt.Sprintf("%d", returnedByteCount) responseBody := string(outputPayload) return events.APIGatewayProxyResponse{ StatusCode: http.StatusPartialContent, Headers: responseHeader, Body: responseBody, }, nil
В качестве базовой проверки, используя more
командную строку, начало исходного файла выглядит следующим образом:
RIFF$^?^C^@WAVEfmt ^P^@^@^@^A^@^B^@Dlt;ACgt;^@^@^Plt;B1gt;^B^@^D^@^P^@data^@^?^C^@ESC^@^Y^@
В то время как загруженный файл выглядит следующим образом:
RIFF$^?^C^@WAVEfmt ^P^@^@^@^A^@^B^@D�^@^@^P�^B^@^D^@^P^@data^@^?^C^@ESC^@^Y^@
Я предполагаю, что у меня где-то проблема с кодировкой. Я подозреваю, что проблема заключается в преобразовании строк, но это тип переменной, который мне нужен для компонента APIGatewayProxyResponse «Тело». Как изменить вывод кода, чтобы убедиться, что полезная нагрузка соответствует исходному файлу?
Комментарии:
1. Вы заставили это работать на местном уровне?
2. @DanielFarrell Не пробовал этого, но я понимаю, к чему вы клоните — может быть, изолировать проблему как функцию или что-то, происходящее в API-шлюзе? Посмотрим, смогу ли я создать локальную версию.