2016-10-28 138 views
-1

我正在嘗試使用Node.js上傳照片。但是,當我上傳,它顯示了這個錯誤:爲什麼我無法上傳文件?

Cannnot位於C閱讀的不確定

屬性文件:\新建\ file.js:13:26

看起來像我做錯了req.files.file.name,我不明白。可能是什麼問題?

下面的代碼:

file.js

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})); 
app.use(multer({dest: '/files/'}).single('file')); 
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.name, function (err, data) { 
     fs.writeFile(file, data, function (err) { 
      if (err) { 
       console.log("Error reading"); 
      } 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("The server is running at http://%s:%s ", host, port); 
}); 

的index.html

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Title</title> 
</head> 
<body> 
<form action="http://127.0.0.1:8081/file_upload" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="submit" value="submit"> 
    </form> 
</form> 
</body> 
</html> 
+0

嘗試'console.log(req.files);'回到空指針。 –

回答

1

這是我做的,工作正常:

var uploadPath = 'public/uploads/'; 
var upload = multer({dest: uploadPath}); 

router.post('/image', upload.single('thePhoto'), function (req, res) { 
    var uploadedFile = uploadPath + req.file.filename; 
0

問題可能是由於您已經在app.use()中添加了multer,它在控件進入post方法之前解析所有數據。所以我認爲你應該使用fs或multer,但不能同時使用。

相關問題