2016-10-28 2 views
-1

Node.jsを使用して写真をアップロードしようとしています。ファイルをアップロードできないのはなぜですか?

はCで未定義

のプロパティファイルを読み込むCannnot:新しい\ 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

ヌルポインタをhome.inにするために '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を既に追加しているために発生する可能性があります。ですから、私はあなたがfsかmulterのどちらかを使うべきだと思いますが、両方を使うべきではないと思います。

関連する問題