如何在Express中处理二进制发布数据?

时间:2017-11-18 16:07:22

标签: node.js image express

我想以二进制形式将图像发布到我的Express应用程序。

我假设它应该在req.body对象中出现,但需要某种形式的中间件才能处理二进制数据?

当我从邮递员发送二进制图像并尝试登录req.body时,该对象为空。

我使用快速生成器作为一个带有body-parser的boilder板,如下所示:

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

我看过Multer,但认为这只适用于多部分数据

还看了一下busboy,但无法弄清楚是否会处理二进制数据。

我是否更正了帖子数据仍会在req.body中出现? 我需要什么中间件来处理二进制数据?

由于

2 个答案:

答案 0 :(得分:3)

我最终使用的方法:

const multer  = require('multer')
const storage = multer.memoryStorage()
const upload = multer({ storage: storage })

router.post('/upload', upload.single('image'), function(req, res, next) {

  const image = req.file.buffer

});

答案 1 :(得分:2)

不幸的是,你不能使用正文解析器来处理二进制数据,比如文件和类似的东西。但你可以做的是使用模块调用formidable来处理这个

示例解析器



app.post('/', (req, res) => {
  const form = new formidable.IncomingForm();
  form.parse(req, (error, fields, files) => {
    if(error){
      console.log(error)
    }
    
    console.log(fields.name)
    
    const cuteCat = files.cat_image;
    
    console.log(cuteCat.name) // The origin file name
    console.log(cuteCat.path) // The temporary file name something like /tmp/<random string>
    
  })
});
&#13;
<input name="cat_image" type="file" />
<input name="name" type="text" />
&#13;
&#13;
&#13;