Node + Express管道文件直接写入writeStream

时间:2016-08-09 13:53:21

标签: node.js express stream fs

在学习方面,我需要使用fs.streams

自行上传文件
router.post('/upload', (req, res, next) => {
  req.pipe(fs.createWritableStream('files/file.png'))
    .on('error', (err) => next(err))
    .on('close', () => {
      res.json({image: 'files/file.png'});
    })
})

这是不可行的。所以有两个问题

  • 如何从req中获取文件名和数据?
  • 如何连接这两个流?

更新:在所有相反操作的教程中 - 将文件从fspipe读取到res到最终用户。

1 个答案:

答案 0 :(得分:0)

您可以使用multer

const multer = require('multer');
const upload = multer({
  dest: 'folderName'
});

router.post('/upload', upload.single('formField'), (req, res, next) => {
  res.json({image: req.file.path});
})

将在此代码文件路径中发送。 如果你想自己发送文件,那么你应该写:

res.download(req.file.path);

而不是res.json({image: req.file.path})

我不知道res.download如何正常工作。也许它需要文件的整个缓冲区并发送它。

multer的文档是here