file upload到Node JS服务器

我正尝试使用express将file upload到我的节点js服务器。 这是我的nodejs代码:

var express=require('express'); var app=express(); var fs=require('fs'); var sys=require('sys'); app.listen(8080); app.get('/',function(req,res){ fs.readFile('upload.html',function (err, data){ res.writeHead(200, {'Content-Type': 'text/html','Content-Length':data.length}); res.write(data); res.end(); }); }); app.post('/upload',function(req,res) { console.log(req.files); fs.readFile(req.files.displayImage.path, function (err, data) { // ... var newPath = __dirname; fs.writeFile(newPath, data, function (err) { res.redirect("back"); }); }); }); 

我的upload.html文件:

 <html> <head> <title>Upload Example</title> </head> <body> <form id="uploadForm" enctype="multipart/form-data" action="/upload" method="post"> <input type="file" id="userPhotoInput" name="displayImage" /> <input type="submit" value="Submit"> </form> <span id="status" /> <img id="uploadedImage" /> </body> </html> 

我得到一个错误,req.files是未定义的。 什么可能是错的? file upload也不起作用。

正如文档中提到的 , req.filesreq.body是由bodyParser中间件提供的。 你可以像这样添加中间件:

 app.use(express.bodyParser()); // or, as `req.files` is only provided by the multipart middleware, you could // add just that if you're not concerned with parsing non-multipart uploads, // like: app.use(express.multipart());