2016-10-28 99 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,但不能同时使用。