Я использую AWS лямбду и пытаюсь написать тестовый модуль / интеграционный тест, так что для этого я буду обходить шлюз API. Я использую данные формы для создания ложного многочастного запроса:
const dummyImg = fs.readFileSync(path.join(__dirname, 'dummy-img.png'));
const formDataObj = {
name: 'some company',
logoData: dummyImg,
};
const form = new FormData();
Object.entries(formDataObj).forEach(([key, value]) => {
form.append(key, value);
});
const mockBody = form.getBuffer().toString();
Затем в моей lamdba я анализирую это с busboy:
const busboy = new Busboy({
headers: {
'content-type': getContentType(event),
'content-length': 177,
},
});
const formData = {};
busboy
.on('field', (fieldName, value) => {
formData[fieldName] = value;
})
.on('file', (fieldName, file, filename, encoding, mimetype) => {
let fileBuffer = Buffer.alloc(0);
file
.on('data', data => {
fileBuffer = Buffer.concat([fileBuffer, data]);
})
.on('end', () => {
formData[fieldName] = {
encoding,
mimetype,
filename,
data: fileBuffer,
};
});
})
.on('error', e => {
reject(e);
})
.on('finish', () => {
resolve(formData);
});
busboy.write(event.body);
busboy.end();
К сожалению, когда я пишу файл на диск, результирующий тип mime - application / octet-stream; а не image / png;
Некоторая информация должна быть потеряна в пути. Есть ли способ установить тип пантомимы при записи файла?