Обработка multipart / form-data на API Gateway / Lambda - PullRequest
0 голосов
/ 05 февраля 2019

Я пробовал несколько способов, но не смог заставить его работать.

Клиентская сторона (React), я отправляю zip-файл следующим образом, используя POST,

const data = new FormData();
        data.append('file', file);
        data.append('filename', file.name);

let params = {
            headers: {
                'Content-Type': 'multipart/form-data'
            },
            body: data
        };

Серверная сторона:(API Gateway / Lambda / Nodejs) Я добавил 'multipart / form-data' в Binary Media Type на стороне шлюза.

При разборе lambda event.body не правильно сформировано.Это выглядит так:

{"body": "e30=",
"isBase64Encoded": true }

Есть идеи, что может произойти?Любой берет на себя, как разобрать?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Хотя ответ Ariz является правильным, я настоятельно рекомендую вам ознакомиться с URL-адресами для предварительной загрузки AWS .Это позволяет вашим клиентам сначала загрузить файл в AWS S3 Bucket, откуда ваша лямбда-функция может позднее получить доступ к объекту.

Особенно, когда вы работаете с большими двоичными файлами, первый подход может привести кмного проблем (-> проблемы с памятью, которых в лямбде мало).

В прошлом я написал короткую запись в блоге об этом .

0 голосов
/ 05 февраля 2019

вы получаете данные, закодированные в base64, ниже приведен один из способов декодирования.Однако это пустой объект.

var base64 = 'e30='
var decodedData = Buffer.from(base64, 'base64').toString();

console.log(decodedData)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...