Я пытаюсь использовать busboy внутри лямбда-функции для обработки почтового запроса, который должен загрузить файл изображения.Я заметил, что содержимое файла не позволяет его анализировать busboy.
Я попытался изменить вызов busboy.write, чтобы использовать просто base64, так как похоже, что файл поступает в двоичном виде, но этотоже не работал.
мой код клиента
const formData = new FormData();
formData.append("file", params.file, params.file.name);
const request = new XMLHttpRequest();
request.open("POST", "https://myapi/uploadphoto");
request.setRequestHeader('Authorization', this.props.idToken);
request.send(formData);
мой лямбда-код
function getFile(event) {
const busboy = new Busboy({headers: event.headers});
const result = {};
return new Promise((resolve, reject) => {
busboy.on('file', (fieldname, file, filename, encoding, mimetype) => {
file.on('data', data => {
result.content = data;
console.log("got data... " + data.length + ' bytes');
});
file.on('end', () => {
result.filename = filename;
result.contentType = mimetype;
resolve(result);
});
});
busboy.on('error', error => reject(error));
busboy.write(event.body, event.isBase64Encoded ? 'base64' : 'binary');
busboy.end();
});
}
При попытке с примером фотографии я заметил, что "получил данныеmsgstr "журнал консоли показывает мне, что я не получаю весь файл.Файл, который я использую, имеет размер 229707 байт, но в журнале консоли указано, что он получил 217351 байт.
Мне интересно, неправильно ли я использую busboy, или это какая-то особенность шлюза lambda + api.Любые идеи или помощь в устранении неполадок высоко ценится.