myshenin / aws-lambda-multipart-parser

Parser of multipart/form-data requests for AWS Lambda
MIT License
74 stars 38 forks source link

Getting a corrupted file after parsing event #6

Closed caiolrm closed 6 years ago

caiolrm commented 6 years ago

Hey,

I was trying to set up the parser to handle multipart file uploads in my function, but I failed at my first try, maybe you guys can shed light at what am I doing wrong here:

This is my simplified event:

let fs = require('fs');
let parse = require('aws-lambda-multipart-parser');
let parsed = parse({
    body: "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",
    "headers": {
        "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryxgyti0PlXGnqD5FF"
    },
    "isBase64Encoded": true
});
fs.writeFileSync('/tmp/file.png', parsed.files.content, 'utf-8');

after running it the parsed object gets the metadata right, but the contents (which gets written in /tmp/file.png seem to be corrupted or maybe I'm handling the encoding wrong?

Appreciate

Sorry for the long b64 btw, it was the smallest image I found

jalleyne commented 6 years ago

@caiolrm any luck getting this to work? @myshenin any confirmation on this module working?

myshenin commented 6 years ago

I'll be able to work on it on weekend

jalleyne commented 6 years ago

@myshenin thanks for the reply, have you been able to get it working at all in the past?

caiolrm commented 6 years ago

@jalleyne @myshenin I got it working, you just had to create the content buffer using binary encoding, I made a PR with some additional changes, removed buffer deprecated constructor, changed the prototype extension to a simple function, removed the dependency from base-64, etc.

Here #9