Недостающие данные при использовании библиотеки busboy для загрузки файла внутри Lambda? - PullRequest
2 голосов
/ 14 апреля 2019

Я пытаюсь использовать 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.Любые идеи или помощь в устранении неполадок высоко ценится.

...