Что такое определение типа файла полезной нагрузки с multipart / form-data в hapi js? - PullRequest
0 голосов
/ 07 февраля 2020

Я использую хапи js с машинописью. Я загружаю файл в multipart/fom-data. Я хочу определить тип req.payload.file. Но, к сожалению, я не смог найти никакой документации, чтобы узнать тип. вот результат console.log(req.payload.file);

Readable {
  _readableState:
   ReadableState {
     objectMode: false,
     highWaterMark: 16384,
     buffer: BufferList { head: null, tail: null, length: 0 },
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: null,
     ended: false,
     endEmitted: false,
     reading: false,
     sync: true,
     needReadable: false,
     emittedReadable: false,
     readableListening: false,
     resumeScheduled: false,
     paused: true,
     emitClose: true,
     autoDestroy: false,
     destroyed: false,
     defaultEncoding: 'utf8',
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: true,
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  _data:
   <Buffer 50 4b 03 04 14 00 06 00 08 00 00 00 21 00 48 41 42 ca 71 01 00 00 b0 06 00 00 13 00 08 02 5b 43 6f 6e 74 65 6e 74 5f 54 79 70 65 73 5d 2e 78 6d 6c 20 ... >,
  _position: 0,
  _encoding: 'utf8',
  hapi:
   { filename: 'file.xlsx',
     headers:
      { 'content-disposition': 'form-data; name="file"; filename="file.xlsx"',
        'content-type':
         'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' } } }

Я хочу сделать это:

const file: <ApropriateTypeHere> = req.payload.file;

, чтобы я мог видеть все свойства внутри file как напечатано в console.log()

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Из документации :

... входящая полезная нагрузка доступна через интерфейс Stream.Readable.

Для которого вы Более подробную информацию можно найти в Node.js документации . Типы можно найти в @types/node.

0 голосов
/ 10 февраля 2020

Многокомпонентные запросы объединяют один или несколько наборов данных в одно тело, разделенное границами.

Я думаю, что вы ищете

    const filename = file.hapi.filename
    console.log(filename )
    const data = file._data

, тогда вы можете сделать это

   fs.writeFile('./upload/' + filename, data, err => {
      if (err) {
        reject(err)
      }
      resolve({ message: 'Upload successfully!' })
    })
...