2017-09-01 11 views
0

私はMySQLデータベースに画像をアップロードするmulterを使用しようとしています未定義され、私はReq.File.Pathは

TypeError: Cannot read property 'path' of undefined

私App.jsを示すエラーを取得しています

var multer = require('multer'); 
app.use(express.static("public")); 
app.post("/updateImage/add",multer({ dest: './public/uploads/'}).single('img') ,contentUpdate.addImage); 

私contentUpdate.js

exports.addImage = function(req, res) { 
    var path = (req.file.path).replace("public/", ''); 
    console.log(path); 
    var data = 
     {     
      image: path 
     }; 

var URLs = data.PageURL; 
connection.query('INSERT INTO `updatedimages` SET ?', [data], function(err, rows) 
{ 
    if (err) 
    { 
     console.log(err); 
    } else 
    { 
     req.flash('success','Entry Successful'); 
     return res.redirect(URLs); 
    } 
}); 
}; 

私updateImage.handlebars

<form id="myForm" action='/updateImage/add' method='POST' > 
    <div class="col-md-12" > 
    <input name='img' type="file" class="form-control" required/> 
</div> 
<div> 

    <button type="submit" class="glyphicon glyphicon-submit btn btn-primary "> 

    </div> 

+0

チェックreq.files(ファイルではない)任意のデータが含まれていますか? –

答えて

0

あなたはHTに適切なエンコードタイプを設定する必要がありますML:それでも

<form id="myForm" action='/updateImage/add' method='POST' enctype='multipart/form-data'> 

、それは入力を検証もに常に良いことだ:

if (! req.file || ! req.file.path) { 
    return res.sendStatus(400); 
} 
+0

@ robertklepはすぐに質問をアップロードしましたが、ありがとうございました! – Tyron

+0

@タイロン私はあなたが答えとしてこれをマークして、残りのSOが知っていると信じています:P – zerohero

0

変更以下:その後、

<input name='file' type="file" class="form-control" required/> 

<input name='img' type="file" class="form-control" required/> 

そして、試してみてください。

app.post("/updateImage/add",multer({ dest: './public/uploads/'}).single('file') ,contentUpdate.addImage); 
+1

答えに感謝していますが、私もenctype = "multipart/form-data"が見つからなかったことに気付きました。 :D – Tyron

関連する問題