2013-07-31 2 views
0

J'ai tout dépouillé jusqu'aux os absolus pour essayer de corriger ce qui ne va pas, et je n'arrive toujours pas à faire bodyParser. Il ne fonctionnera même pas pour les fichiers .txt.express.bodyParser ne pas analyser?

server.js

var  cfg  = require(__dirname + '/config'), 
    express  = require('express'); 


var app = express(); 

app.set('view engine', 'ejs'); 
app.set('views', __dirname + '/views'); 
app.use(express.logger(cfg.LOGGER)); 
app.use(require('connect').bodyParser()); 
app.use(express.static(__dirname + '/public')); 
app.use(express.favicon(__dirname + '/public/favicon.ico')); 

app.get('/', function(req, res) { 
    res.render('index'); 
    res.end(); 
}); 

app.post('/upload', function(req,res) { 
    console.log(req.body.file); 
    res.end(); 
}); 

app.listen(2017); 

index.ejs

<form enctype="multipart/form-data" action="/upload" method="POST"> 
    <input id="multipart/form-data" type="file" name="foo" /> 
    <button>Upload</button> 
</form> 

le résultat est que req.body.file est undefined

Répondre

2

Vous pouvez accéder au fichier en utilisant req.files.<yourFileInputFieldName>:

console.log(req.files.foo); 

Plus d'infos dans this section des docs.

+0

Ya je sais que. Une de ces choses était à ce stade - je veux juste savoir pourquoi ce qui précède * ne fonctionne pas. Je vais marquer votre réponse comme correcte de toute façon puisque personne d'autre ne répondra probablement. Merci pour la réponse! – Colin

+0

@ColinMartell Cela ne fonctionne pas car 'files' est simplement fourni en dehors de' res.body'. La séparation vient de [formidible] (https://npmjs.org/package/formidable), qui fournit 'fields' (' body') et 'files' séparément au middleware [' multipart'] (http: // www .senchalabs.org/connect/multipart.html). –

0

Modifier cette

app.use(require('connect').bodyParser()); 
      as 
    app.use(express.bodyParser()); 


    app.post('/upload', function(req,res) { 
    console.log(req.body.foo);//in req.body u have to mention the name of the file.. 
    res.end(); 
    }); 
+0

req.body est un objet vide – Colin

+0

@ColinMartell voir ma réponse mise à jour. – sachin