hapijs中带multipart/form-data的文件payload的类型定义是什么?

What is the type definition of file payload with multipart/form-data in hapijs?

我正在使用带有打字稿的 hapijs。 我在 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()

来自documentation

...the incoming payload is made available via a Stream.Readable interface.

您可以在 Node.js documentation. The typings can be found in @types/node 中找到更多信息。

多部分请求将一组或多组数据合并为一个主体,由边界分隔。

我想你正在寻找

    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!' })
    })