Преобразование csv / xlsx в base64 в AWS API Gateway - PullRequest
0 голосов
/ 02 февраля 2020

Я хотел бы загрузить данные в формате csv и excel, используя AWS API Gateway, вызывающий Lambda, после чего файл будет сохранен на S3. Он работал нормально и, как и ожидалось, использовал AWS лямбда-тест, преобразовав мои файлы csv и excel в base64, а затем поместил его в строку json, как показано ниже:

{
"content": "UEsDBBQABgAIAAAAIQBi7p1oXgEAAJAEAAATAAg"
}

, а затем я расшифровал его, используя :

file_content = base64.b64decode(event['content'])

Однако, когда я пытаюсь отправить файлы с помощью AWS API Gateway, он возвращает ошибку ниже:

{
    "message": "Could not parse request body into json: Unrecognized token \'PK"
}

В моих AWS шаблонах сопоставления шлюза API, Я устанавливаю два типа контента для запроса Конфигурация типа контента Для приложения / потока октетов Я использую тело ввода по умолчанию:

{
    "content": "$input.body"
}

Как я включаю application / octet-stream в бинарных типах носителей в настройках

Для text / csv Я кодирую тело ввода:

{
    "content": "$util.base64Encode($input.body)"
}

At во-первых, я использую multipart / form-data и имею ту же проблему, поэтому я загружаю его, используя двоичный файл данных curl для файла Excel:

curl --request POST -H "Content-Type: application/octet-stream" --data-binary "@/C:/Documents/test.xlsx" https://test1234.execute-api.ap-southeast-1.amazonaws.com/upload

и необработанные данные curl для файла csv:

curl --request POST -H "Content-Type: text/csv" --data-raw "@/C:/Documents/test.csv" https://test1234.execute-api.ap-southeast-1.amazonaws.com/upload
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...