7. 文件上传 - 7.1 busboy模块

优质
小牛编辑
128浏览
2023-12-01

快速开始

安装

  1. npm install --save busboy

模块简介

busboy 模块是用来解析POST请求,node原生req中的文件流。

开始使用

  1. const inspect = require('util').inspect
  2. const path = require('path')
  3. const fs = require('fs')
  4. const Busboy = require('busboy')
  5. // req 为node原生请求
  6. const busboy = new Busboy({ headers: req.headers })
  7. // ...
  8. // 监听文件解析事件
  9. busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
  10. console.log(`File [${fieldname}]: filename: ${filename}`)
  11. // 文件保存到特定路径
  12. file.pipe(fs.createWriteStream('./upload'))
  13. // 开始解析文件流
  14. file.on('data', function(data) {
  15. console.log(`File [${fieldname}] got ${data.length} bytes`)
  16. })
  17. // 解析文件结束
  18. file.on('end', function() {
  19. console.log(`File [${fieldname}] Finished`)
  20. })
  21. })
  22. // 监听请求中的字段
  23. busboy.on('field', function(fieldname, val, fieldnameTruncated, valTruncated) {
  24. console.log(`Field [${fieldname}]: value: ${inspect(val)}`)
  25. })
  26. // 监听结束事件
  27. busboy.on('finish', function() {
  28. console.log('Done parsing form!')
  29. res.writeHead(303, { Connection: 'close', Location: '/' })
  30. res.end()
  31. })
  32. req.pipe(busboy)

更多模块信息

更多详细API可以访问npm官方文档 https://www.npmjs.com/package/busboy