2013-06-20 72 views
7

我正尝试使用express将文件上传到我的节点js服务器。 这里是我的代码的NodeJS:将文件上传到节点JS服务器

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是不确定的。 什么可能是错的?文件上传也不起作用。

回答

10

如在the docs,req.files中指出的,以及req.bodybodyParser中间件提供。你可以像这样添加中间件:

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()); 
+0

非常感谢。我不应该错过这个。 –