I'm using react code on the frontend:
const formData = new FormData();
formData.append('username', e.target.username.value);
formData.append('email', e.target.email.value);
formData.append('bio', e.target.bio.value);
formData.append('profileImg', fileInput);
const newUser = await API.post('apiName', '/auth/sign-up', {
body: formData,
});
On backend using express.js with multer, amplify rest api:
const multer = require('multer');
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const upload = multer({
storage: multer.memoryStorage(),
// file size limitation in bytes 2MB
limits: { fileSize: 2097152 },
});
app.post(
'/auth/sign-up',
upload.single('profileImg'),
async function(req, res) {
const details = await s3
.upload({
Bucket: 'bucketName',
Key: 'someKey',
Body: req.file.buffer,
}).promise();
console.log(details);
}
);
Details get logged, file gets uploaded, no error on cloudwatch but file is corrupted.