2016-07-29 77 views
1

我正在嘗試使用multer上傳文件。下面的代碼:Multer給出請求文件undefined

HTML

<form action="/" method="post" encrypt="multipart/form-data" > 
     <input name="upl" type="file" ></br> 
     <input type="text" name="onenee" ></br> 
     <input type="submit" value="submit" /> 

</form> 

NODE JS

var express = require('express'); 
// var csrf = require('csurf'); 
var passport = require('passport'); 
var Product = require('../models/product'); 
var multer = require('multer'); 
var upload = multer({ dest: 'public/uploads/' }); 

var router = express.Router(); 

router.post('/', upload.single('upl'), function (req, res, next) { 
     console.log(' Field name1 '+ req.body.onenee); 
     console.log(' Field name2 '+ req.files); 
     console.log(' Field name3 '+ req.file); 
     res.send(req.file); 
}); 

OUTPUT我從控制檯

字段名1喜

字段名2未定義

場NAME3不確定

POST/200 15.536毫秒 - -

回答

2

你的表格屬性是不正確,改變encryptenctype代替。 您的文件將通過req.file

UPDATE:
重命名文件擴展名爲:

var storage = multer.diskStorage({ 
     destination: function(req, file, cb) { 
      cb(null, './public/uploads/'); // Make sure this folder exists 
     }, 
     filename: function(req, file, cb) { 
      var ext = file.originalname.split('.').pop(); 
      cb(null, file.fieldname + '-' + Date.now() + '.' + ext); 
     } 
    }), 
    upload = multer({ storage: storage }).single('upl'); 

router.post('/', upload, function (req, res, next) { 
     console.log('body', req.body); 
     console.log('file', req.file); 
}); 
+0

謝謝你。我現在想要自殺。 – Illep

+0

但是,文件擴展名缺失。我怎麼能得到這個? :S – Illep

+0

這是因爲multer爲你創建了一個文件名來使它們唯一,我不知道他們爲什麼不添加擴展名。我將用代碼更新示例以重命名帶有擴展名的文件。 –

0

不要使用:

cb(null, file.fieldname + '-' + Date.now() + '.' + ext);

而是利用這下面的代碼

cb(null, Date.now() + '.jpg');