Cómo enviar valores de elementos de entrada (texto / seleccionar / radio) al servidor node.js

¿Cómo puedo recibir los valores de los botones de opción y una lista de selección y ponerlos en el nombre del archivo?

Esta es la función que utilizará los valores:

router.get('/import', function(req, res, next) { var csvStream = fastCsv() .on('data', function(data) { var report = new csvUploads({ jirakey: data[0], status: data[1], priority: data[2], validity: data[3], type: data[4], month: data[5], defectCategory: data[6], defectSubCategory: data[7] }); report.save(function(error) { console.log(report); if (error) { throw error; } }); }).on('end', function() {}); const request = req.body; let month = req.month; let team = req.team; const filename = month + ' - ' + team + '.csv'; console.log(res.send(filename)); const csvFilePath = "./uploads/" + filename; var stream = fs.createReadStream(csvFilePath); stream.pipe(csvStream); res.json({ success: 'Data imported successfully', status: 200 }); }); 

Actualmente esto es lo que he intentado, devuelve undefined tanto en el botón de radio como en el valor de lista de selección

Le sugiero que simplemente sirva la vista (importer.html) y la use como cliente para su servidor (usando POST), de esa manera puede interactuar con el servidor y mostrar los cambios / datos recuperados en el cliente.

Usted necesitará:

  1. Ruta GET para mostrar el “cliente”.
  2. Ruta POST para utilizar los “datos enviados por el cliente y elaborar una respuesta adecuada”.
  3. Lógica del cliente para hacer algo cuando el servidor responde.

Espero que esta prueba de concepto (ejemplo de trabajo) le ayude a comprender mejor:

CÓDIGO DE SERVIDOR

 const express = require('express'); global.app = express() const bodyParser = require('body-parser') /* SETUP SERVER CONFIG OPTIONS */ const CONF = { "htmlDir":__dirname+"/", "port":3000 } //---------------------------------------------------------- //.: Server StratUp : Setup Event Handling :. function InitializeServer(){ console.log("[~] starting ...") //:[EXPRESS]:MiddleWare app.use(bodyParser.urlencoded({extended:false})) app.use(bodyParser.json()) //:[EXPRESS]:Router (GET Requests) app.get("/",RenderImport) //:[EXPRESS]:Router (POST Requests) app.post("/import",ImportRequest) //:[EXPRESS]:Start app.listen(CONF.port,onSuccessfullStartup) } /* Callback example for express successfully listening */ const onSuccessfullStartup=()=>{ console.log("[i] ready & listening","\n http://localhost:"+CONF.port+"/") } //---------------------------------------------------------- /* ROUTER EVENT FUNCTIONS : */ const RenderImport=(req,res)=>{res.sendFile(CONF.htmlDir+"importer.html")} const ImportRequest=(req,res)=>{ console.log("[POST] /import") console.log(req.body) if(req.body.stringExample&&req.body.selectExample&&req.body.radioExample){ console.log(" > valid POSTData") var doSomethingNow={"status":"OK","data":[1,2,3,4,5]} res.json(doSomethingNow) }else{ console.log(" > invalid POSTData") res.json({"status":"ERROR"}) } } //---------------------------------------------------------- InitializeServer() // We can now start the server 

CÓDIGO CLIENTE (importer.html)

 INDEX 

SEND DATA TO SERVER

One Other Another

en lugar de

  const request = req.body; let month = req.month; let team = req.team; 

tratar

  const request = req.body; let month = request.month; let team = request.team;