2016-06-04 14 views
8

मैं अपने नोड सर्वर से किसी न किसी रूप डेटा भेजने की कोशिश की से FormData को संभालने के लिए कैसे लेकिन req.body मेरी फार्म में से कोई भी खाने हैं नोड पक्षएक्सप्रेस 4

var express = require('express') 
var app = express() 
var path = require('path') 
var bodyParser = require('body-parser') 
app.use(bodyParser.urlencoded({ 
    extended: true 
})); 

app.get('/', function (req, res) { 
    res.sendFile('index.html') 
}) 
app.post('/sendmail', function (req, res) { 

    const formData = req.body.formData 

इस मैं क्या ब्राउज़र से भेज रहा है

fetch('/send', { 
    method: 'POST', 
    body: new FormData(form) 
}) 
देव उपकरण में

मैं केवल डेटा Referer में पारित देखते हैं, हो सकता है जो कि मेरी समस्या है

Referer: http://localhost:3000/?name=&budget=%C2%A31000

+0

'शरीर parser' बहुखण्डीय अनुरोध निकायों संभाल नहीं करता है, [' multer'] (https की तरह कुछ की कोशिश: // www.npmjs.com/package/multer)। – robertklep

+0

@robertklep मुझे धन्यवाद, जवाब देने के लिए इसे स्वतंत्र महसूस करें। हो सकता है कि अगर मैं JSON को डेटा अतिरिक्त कर दूं तो यह अधिक आसान होगा? मुझे आश्चर्य है कि मैं सिर्फ फॉर्मडाटा को पास करने के लिए पास कर सकता हूं और इसे मल्टीपार्ट के रूप में भेज सकता हूं। – SuperUberDuper

उत्तर

21

body-parser मल्टीपार्ट निकायों को संभाल नहीं करता है, जो FormData है।

इसके बजाय, multer जैसे मॉड्यूल का उपयोग करें।

उदाहरण के लिए, एक अनुरोध के (नियमित) क्षेत्रों को पुनः प्राप्त करने:

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

app.post('/send', upload.fields([]), (req, res) => { 
    let formData = req.body; 
    console.log('form data', formData); 
    res.sendStatus(200); 
}); 
+1

thx, urlencoded – SuperUberDuper

+1

@SuperUberDuper के माध्यम से भेजने के लिए किसी भी यूटिल को फॉर्म डेटा लेने के लिए और JSON ऑब्जेक्ट (टेक्स्ट इनपुट जैसे चीजों के लिए) के रूप में वापस लौटने के लिए पता करें, आपको शायद ['formData.entries()' ] (https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries) फ़ॉर्म सामग्री से जेएस ऑब्जेक्ट बनाने के लिए। – robertklep

+0

यहां दृश्य के पीछे क्या होता है 'upload.fields ([]) '? – Ced

संबंधित मुद्दे