2017-09-22 12 views
0

フォームデータをnodejsに送信しようとしていますが、req.bodyは常に空でreq.filesは未定義です。ここに私のコードは、私はあなたがmulterを指示する必要がありmulter readmeフォームデータを送信するときにreq.bodyが常に空でreq.filesが常に定義されていません

を読んで、少なくとも示唆 index.js

const express = require('express'); 
const app = express(); 
const mongoose = require('mongoose'); 
mongoose.Promise = global.Promise; 
const config = require('./config/database'); 
const path = require('path'); 
const bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({extended: true})); 
app.use(bodyParser.json()); 
const router = express.Router(); 
const products = require('./routes/product')(router); 
const port = process.env.PORT || 3030; 
app.use('/products', products); 

app.listen(port,() => { 
    console.log('Listening on port ' + port + ' in ' + process.env.NODE_ENV + ' mode'); 
}); 

とproduct.jsファイル内

let multer = require('multer'); 
let upload = multer(); 


module.exports = (router) => { 

    router.post('/newProduct', (req, res) => { 
      console.log('req'); 
      console.log(req.body); 
      console.log(req.files); 
}) 
} 
+0

私は 'form-data'によってファイルアップロードのための 'multipart/form-data'を意味すると思いますか? 'body-parser'はマルチパート本体をサポートしていません。https://expressjs.com/en/resources/middleware/body-parser.htmlを参照してください。' multer' https://expressjs.com/en /resources/middleware/multer.html – skirtle

+0

それはhalps、ありがとう) – Mona

答えて

0

です各ルートのファイルをアップロードします。

router.post('/newProduct', upload.array('files', 5), (req, res) => { 
      console.log('req'); 
      console.log(req.body); 
      console.log(req.files); 
}) 

については

またはあなたはまた、複数のアップロードフォームフィールドを処理するために、単一のファイルのためのupload.single()またはupload.fields()を使用することができます。しかし、これらのすべてが彼らのページでよりよく説明されています。