在Express / Node服务器上通过HTTP POST接收wavaudio文件

我试图通过cURL发送audio文件audio.wav到我的快递服务器。 我正在使用以下cURL请求:

  curl -X POST --data-binary @"audio.wav" -H "Content-Type: audio/wav" localhost:3000/extract_indicators/audio/darksigma 

在我的服务器上,我使用顶部的以下行:

 app.use(bodyParser.json()); 

这样我就可以默认将传入请求的正文parsing为JSON。 在我的适当的Express路由处理程序中,我有:

 app.post('/extract_indicators/audio/:user_id', function (req, res) { app.use(bodyParser.raw({ type: 'audio/wav' })); console.log("RECIEVED AUDIO TO EXTRACT INDICATORS: ", req.body); <do stuff with audio and send result back> app.use(bodyParser.json()); }); 

我打电话给console.log打印:

 RECIEVED AUDIO TO EXTRACT INDICATORS: {} 

我究竟做错了什么? 为什么req.body不包含我的数据?

事实certificate这是通过使用下面的声明( app程序处理程序之外)来解决的:

 app.use(bodyParser.json({ limit: '50mb' })); app.use(bodyParser.raw({ type: 'audio/wav', limit: '50mb' })); app.post('/extract_indicators/audio/:user_id', function (req, res) { console.log("RECIEVED AUDIO TO EXTRACT INDICATORS: ", req.body); <do stuff with audio and send result back> }); 

控制台输出现在是:

 RECIEVED AUDIO TO EXTRACT INDICATORS: <Buffer 52 49 46 46 54 b0 01 00 57 41 56 45 66 6d 74 20 10 00 00 00 01 00 01 00 80 3e 00 00 00 7d 00 00 02 00 10 00 64 61 74 61 30 b0 01 00 00 00 00 00 00 00 ... >