Search code examples
apilambdamultipartform-datagatewayserverless

Handling multipart/form-data on API Gateway/Lambda


I tried few methods, not able to get it working.

Client side(React), I am sending a zip file as follows using POST,

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

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

Server side:(API Gateway/Lambda/Nodejs) I added 'multipart/form-data' to Binary Media Type on Gateway side.

When parsing through lambda event.body is not well formed. It looks like this:

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

Any ideas what might be happening? Any takes on how to parse?


Solution

  • you are getting base64 encoded data, following is one of the ways to decode. However it's an empty object.

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