2015-03-18 2 views
0

J'essaie d'utiliser middleware busboy pour obtenir le corps d'une demande POST.obtenir le corps avec busboy express

je suit dans la principale server.js

//file upload middleware 
var busboy = require('connect-busboy'); 
app.use(busboy()); 

J'ai un itinéraire mis en place comme ceci:

app.post('/create', function(req, res){ 

    req.pipe(req.busboy); 
    req.busboy.on('finish', function (fieldname, file, filename) { 
     console.log(req.body); 
    }); 

}); 

Mais si j'envoie une demande au point d'extrémité i obtenir les éléments suivants erreur:

_stream_readable.js:501 
    dest.end(); 
     ^
TypeError: Cannot call method 'end' of undefined 
    at IncomingMessage.onend (_stream_readable.js:501:10) 
    at IncomingMessage.g (events.js:180:16) 
    at IncomingMessage.emit (events.js:92:17) 
    at _stream_readable.js:943:16 
    at process._tickCallback (node.js:419:13) 

Comment puis-je lire le corps à l'intérieur de cette route?

Répondre

1

Votre gestionnaire d'événements finish est incorrect. Cela ressemble à une faute de frappe et devrait être un gestionnaire d'événement file à la place.

Deuxièmement, il semble que la demande Content-Type ne soit pas correcte. Il devrait être soit multipart/form-data soit application/x-www-form-urlencoded.

Enfin, req.body ne sera pas défini dans votre gestionnaire d'événements car vous ne le remplissez pas, donc ce sera toujours undefined.