2013-06-20 14 views
7

Sto tentando di caricare un file sul mio server js nodo utilizzando express. Ecco il mio codice nodejs:Caricamento file su un server JS Node

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"); 
    }); 
}); 

}); 

Il mio file 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> 

sto ottenendo un errore che le req.files non è definito. Cosa potrebbe esserci di sbagliato? Anche il caricamento del file non funziona.

risposta

10

Come indicato in the docs, req.files, insieme a req.body sono forniti dal middleware bodyParser. È possibile aggiungere il middleware in questo modo:

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

Grazie mille. Non avrei dovuto mancarlo. –