Javascript 上传文件时如何在服务器上获取表单数据值?

Javascript 上传文件时如何在服务器上获取表单数据值?,javascript,jquery,node.js,multer,Javascript,Jquery,Node.js,Multer,我有一个表单,其中有一个用户输入字段,用户在其中键入自己的姓名,还有一个type=“file”,需要上传到服务器上 但我想在服务器上获取请求参数(user enter name)。我使用body解析器获取值(req.body),但获取未定义的 HTML <form id="fileUploadForm"> <input type="file" name="file" id="fileId"/> <input type="submit" value="

我有一个表单,其中有一个
用户输入字段,用户在其中键入自己的姓名,还有一个type=“file”,需要上传到服务器上
但我想在服务器上获取请求参数(
user enter name
)。我使用
body解析器
获取值(req.body),但获取
未定义的

HTML

<form id="fileUploadForm">
    <input type="file" name="file" id="fileId"/>
    <input type="submit" value="Upload" name="submit" class="submit">
    username <input type="text" placeholder="enter first name"  name="username" />
</form>
我的文件已成功上载到服务器上,但我对这两行内容感到困惑

  var form = $('#fileUploadForm')[0];
    // Create an FormData object
  var data = new FormData(form);
什么是数据?从我的观点来看,数据包含需要上传的
用户名值和文件数据

服务器代码

如何在服务器上获取
用户名和文件数据
值。我已经使用了bodypaser插件,但req.body未定义

这是我的密码

var express = require('express');
var multer = require('multer');
var bodyParser = require('body-parser');
var cors = require('cors');
var app = express();
var PORT = process.env.PORT || 3000;

// use of body parser
app.use(bodyParser.urlencoded({
    extended: true
}));

app.use(bodyParser.json());
app.use(cors());

var storage = multer.diskStorage({ //multers disk storage settings
    destination: function (req, file, cb) {
        cb(null, './uploads/')
    },
    filename: function (req, file, cb) {
        var datetimestamp = Date.now();
        cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length - 1])
    }
});
var upload = multer({ //multer settings
    storage: storage
}).single('file');


app.post('/upload', function (req, res) {
    console.log(req.body)
    console.log(req)
    upload(req, res, function (err) {
        if (err) {
            res.json({error_code: 1, err_desc: err});
            return;
        }
        res.json({error_code: 0, err_desc: null});
    });
});


app.listen(PORT, () => {
    console.log(`App is listening to ${PORT}`);
})

如何在服务器上获取从客户端传递的表单字段值?

在formdata中再添加一个键

var data = new FormData();
var files = $("#fileId").get(0).files;
data.append("fileUploadForm", files[0]);
data.append("Username",$('[name="username"]').val());

使用reference

服务器上有哪些更改?我需要我还需要更改服务器上的某些内容node.js中的服务器代码?您可以在node js中搜索“如何在node.js key value中获取表单数据”yes..
var files=$(“#fileUploadForm”).get(0).files正在提供
未定义的
设置id属性“”,并使用$(“#inputfile”).get(0).files;
var data = new FormData();
var files = $("#fileId").get(0).files;
data.append("fileUploadForm", files[0]);
data.append("Username",$('[name="username"]').val());