如何从服务器端的多个input字段(Express.js / Node.js)中查找数据?

我有一个具有多个描述文本字段的表单,文件select字段并提交跨域请求(CORS变体)button:

<form class="upload" id="upload_form" enctype="multipart/form-data" method="post" action="http://localhost:3001/upload/1234567890"> <div class="row-fluid"> <div class="span5 row-fluid" id="description" style="margin-left:0px;"> <div> <label>Title</label> <input class="span12" type="text" placeholder="Title" id="description_title" name="description_title"/> <label>Author</label> <input class="span12" type="text" placeholder="Author" id="description_author" name="description_author"/> <label>Tags</label> <input class="span12" type="text" placeholder="Tags" id="description_tags" name="description_tags"/> <label>Description</label> <textarea class="span12" id="description_textarea" name="description_textarea" rows="5" style="resize:none"></textarea> <div id="buttons" class="row-fluid" style="margin-top: 5px"> <div class="span12"> <span class="span5 btn btn-primary btn-file" id="chose_files_btn" onclick="filechose_button.click()">chose files <input id="filechose_button" type="file" name="fileData" data-url="http://localhost:3001/upload/1234567890"/></span> <button id="upload_button" type="submit" name="upload" class="span5 offset2 btn btn-success" disabled="true" onclick="$('#upload_form').trigger('upload_fired');">upload</button> </div> <!-- span12 --> </div> <!-- buttons --> </div> <!-- well --> </div> <!-- video_description --> </div> <!-- row-fluid --> </form> 

Node.js(Express.js)服务器有一个路由:

 app.post('/upload/:id', function(req, res){ console.log(req.fields); ... }); 

问题是,我无法从input字段中find数据: req.fields undefined

如何从服务器上的reqfind数据(文本描述和文件)?


更新:

大! req.body真的可以访问所有的字段, 但:

 console.log(req.body) 

打印:

 { description_title: 'aaa', description_author: 'bbb', description_tags: 'ccc', description_textarea: 'ddd', upload: '' } 

fileData字段在哪里? 我的意思是,在哪里我上传的文件与描述(前述领域)?

更新2:完成!

文件不在body属性中,而在req.files

感谢AdamAndyfan

正如亚当所说,如果你看到这两行

 app.use(express.bodyParser()); app.use(express.methodOverride()); 

在express的app.js文件中,那么你可以阅读下面给出的字段。

 app.post('/upload/:id', function(req, res){ console.log(req.body.description_title); console.log(req.body.description_author); console.log(req.body.description_tags); console.log(req.body.description_textarea); console.log(req.files); res.send("Done!"); }); 

你可以阅读更多关于如何在这个链接快速处理文件http://howtonode.org/really-simple-file-uploads

只要你在路由之前在你的configuration文件中有express.methodOverride() ,你就需要req.body

在你的路线尝试console.log(req.body); 看看你到达什么目标。 对于路由参数是req.params

console.log(object); 可以成为你最好的朋友,当试图find你要找的对象和它们所包含的数据结构。