Как вы устанавливаете миметип изображения? - PullRequest
0 голосов
/ 05 февраля 2020

Я использую 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;

Некоторая информация должна быть потеряна в пути. Есть ли способ установить тип пантомимы при записи файла?

...