2017-03-03 76 views
0

Im測試Express的例子,但是我遇到了這個問題。使用node.js上傳圖片時出錯 - Express

我想執行這個代碼示例(從網上取得的例子),當我嘗試上傳圖像時出現此錯誤。

TypeError: Cannot read property 'file' of undefined 

服務器

var express = require('express'); 
var app = express(); 
var fs = require("fs"); 

var bodyParser = require('body-parser'); 
var multer = require('multer'); 

app.use(express.static('public')); 
app.use(bodyParser.urlencoded({ extended: false })); 
var multer = require('multer'); 

app.get('/index.html', function (req, res) { 
    res.sendFile(__dirname + "/" + "index.html"); 
}) 

app.post('/file_upload', function (req, res) { 
    console.log(req.files.file.name); 
    console.log(req.files.file.path); 
    console.log(req.files.file.type); 
    var file = __dirname + "/" + req.files.file.name; 

    fs.readFile(req.files.file.path, function (err, data) { 
     fs.writeFile(file, data, function (err) { 
     if(err){ 
      console.log(err); 
      }else{ 
       response = { 
        message:'File uploaded successfully', 
        filename:req.files.file.name 
       }; 
      } 
     console.log(response); 
     res.end(JSON.stringify(response)); 
     }); 
    }); 
}) 

var server = app.listen(8081, function() { 
    var host = server.address().address 
    var port = server.address().port 

    console.log("Example app listening at http://%s:%s", host, port) 
}) 

CLIENT

<html> 
    <head> 
     <title>File Uploading Form</title> 
    </head> 

    <body> 
     <h3>File Upload:</h3> 
     Select a file to upload: <br /> 

     <form action = "http://127.0.0.1:8081/file_upload" method = "POST" 
     enctype = "multipart/form-data"> 
     <input type="file" name="file" size="50" /> 
     <br /> 
     <input type = "submit" value = "Upload File" /> 
     </form> 

    </body> 
</html> 
+0

這幾乎可以肯定這一行:'var文件= __dirname + 「/」 + req.files.file。名稱;'確保'req.files.file'是正確的。 –

+0

你說你是「測試例子」,但是說例子的來源是什麼? –

回答

1

嘗試......

<html> 
<head> 
    <title>File Upload</title> 
</head> 

<body> 
    <h3>File Upload:</h3> 
    Select a file to upload: <br /> 

    <form action = "http://127.0.0.1:8081/file_upload" method = "POST" 
    enctype = "multipart/form-data"> 
    <input type="file" name="foo" size="50" /> 
    <br /> 
    <input type = "submit" value = "Upload File" /> 
    </form> 

</body> 
</html> 

Server.js

var express = require('express'); 
var app = express(); 
var path = require("path"); 
var bodyParser = require('body-parser'); 
var multer = require('multer'); 
app.use(express.static('public')); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.get('/index.html', function (req, res) { 
res.sendFile(__dirname + "/" + "index.html"); 
}) 

var upload = multer({ 
    dest: path.join(__dirname, '../public/upload/temp') 
}); 


app.post('/file_upload', upload.single('foo'), function(req, res) { 
    if (req.file) { 
    console.dir(req.file); 
    return res.end('Uploaded successfuly'); 
} 
res.end('No file found'); 
}); 

var server = app.listen(8081, function() { 
    var host = server.address().address 
    var port = server.address().port 

    console.log("Example app listening at http://%s:%s", host, port) 
}) 

對於多上傳變化upload.single( '富'),以upload.array( '富')