2013-06-20 20 views
7

Próbuję przesłać plik do mojego serwera js węzła za pomocą opcji express. Oto mój kod nodejs:Przesyłanie plików do serwera węzłów 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"); 
    }); 
}); 

}); 

Mój plik 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> 

Dostaję błąd, że req.files jest niezdefiniowany. Co może być nie tak? Przesyłanie plików również nie działa.

Odpowiedz

10

Jak podano w dokumencie the docs, req.files, wraz z req.body są dostarczane przez oprogramowanie pośredniczące bodyParser. Możesz dodać oprogramowanie pośredniczące w następujący sposób:

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

Dziękuję bardzo. Nie powinienem był tego przegapić. –

Powiązane problemy