2013-06-20 14 views
7

expressを使用してノードjsサーバーにファイルをアップロードしようとしています。私はreq.filesが未定義であるというエラーを取得していますノードJSサーバーへのファイルアップロード

<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> 

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ファイル:ここに は私nodejsコードです。 何が間違っている可能性がありますか?ファイルのアップロードも機能していません。

答えて

10

the docsに記載されているように、req.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()); 
+0

ありがとうございます。私はそれを逃してはいけません。 –