2013-11-20 54 views
0

自昨天以來,我一直試圖理解這一點,但即使通過詢問Google和StackOverFlow,我也找不到任何解決方案。 問題是我正在構建一個項目,裏面有「產品」模型,控制器和視圖。在new.ejs視圖中,我有一個包含文件標籤(名爲image)的表單。因此,在控制器上,我嘗試通過在控制檯中記錄req.files.image.path來獲取映像路徑,但req.files爲空。我也嘗試顯示未定義的req.body.image。Sails.js req.files爲空且req.body.image未定義

這裏是客戶端代碼(視圖/產品/ new.ejs):

(這是一個Sails.js應用)

這裏是客戶端代碼(視圖/產品/新):

<div class='container'> 
    <form action='/product/create' role='form' class='form-signin' enctype="multipart/form-data" id='product-form'> 
     <div class='form-group'> 
      <label class='sr-only' for='name'>Name of the product</label> 
      <input type="text" class='form-control' placeholder="Name" name='name' id='name' /> 
     </div> 
     <div class='form-group'> 
      <label class='sr-only' for='image'>Image of the product</label> 
      <input type="file" name='image' id='image' /> 
     </div> 
. 
. 
.etc... 

,這裏是服務器端(API /控制器/ ProductController.js):

'create': function(req, res, next) { 
    // Include the node file module 
    var fs = require('fs'); 
    console.log(req.files); //This logs : { } in the console 
    console.log(req.body.image); //This logs : undefined in the console 
    //Readfile with fs doesn't work cause req.files is empty 
    // fs.readFile(req.files.image.path, function(error, data) { 
    // //get image name 
    // var imageName = req.files.data.name; 

    // //if enable to get name 
    // if (!imageName) { 
    //  console.log('error uploading image'); 
    //  res.redirect('/product/new'); 
    //  //Else if we have an image 
    // } else { 
    //  //change the path to our own 
    //  var newPath = __dirname + '/assets/images/products/fullsize/' + imageName; 
    //  fs.writeFile(newPath, data, function(error) { 
    //   console.log(newPath); 
    //   //res.redirect('/product' + imageName); 
    //  }); 
    // } 

    // }); 
} 

釷爲你提供幫助。

Mat。

也可以在這裏:https://github.com/balderdashy/sails/issues/1127

回答

3

使用method = post在你的HTML表單

+1

謝謝,我看到這張貼後:-)太對了。無論如何,我會投票給你的。 –