Javascript NodeJS:无法获取post请求文本字段

Javascript NodeJS:无法获取post请求文本字段,javascript,node.js,ajax,formidable,Javascript,Node.js,Ajax,Formidable,我是NodeJS的新手,所以事情对我来说并不容易。场景是我有一个输入字段,它将接受多个文件 <input id="upload-input" type="file" name="uploads[]" multiple="multiple"> 现在该文件正在发送,在我的后端,我可以使用上传该文件,但问题是我无法获得目录值,这是我的代码 require('dotenv').load(); var express = require('express'); var app = expre

我是NodeJS的新手,所以事情对我来说并不容易。场景是我有一个输入字段,它将接受多个文件

<input id="upload-input" type="file" name="uploads[]" multiple="multiple">
现在该文件正在发送,在我的后端,我可以使用
上传该文件,但问题是我无法获得
目录
值,这是我的代码

require('dotenv').load();
var express = require('express');
var app = express();
var path = require('path');
var formidable = require('formidable');
var fs = require('fs');
var session = require('express-session');
app.set('views', __dirname + '/public');
app.use('/uploads', express.static(process.env.USER_UPLOADS))
var cors=require('cors');
app.use(cors({origin:true,credentials: true}));
app.post('/upload', function(req, res) {
    var user_folder = "path/to/directory/";
    var form = new formidable.IncomingForm();
    form.multiples = true;
    form.uploadDir = path.join(__dirname, process.env.USER_UPLOADS + user_folder);
    form.on('file', function(field, file) { fs.rename(file.path, path.join(form.uploadDir, file.name)); });
    form.on('error', function(err) { console.log('An error has occured: \n' + err); });
    form.on('end', function() { res.end('success'); });
    form.parse(req);
});
var server = app.listen(3000, function(){
    console.log('Server listening on port 3000');
});
我试过了

console.log(req.body)
但是它返回
未定义的
,那么如何从后端获取
目录
值呢


提前感谢。

为了解决您的问题,我对主应用程序的服务器文件做了一些更改 i、 e.
server.js/app.js/index.js
任何适用于你的人。见以下更改:

require('dotenv').load();
var express = require('express');
var app = express();
var path = require('path');
var bodyParser = require('body-parser');
var formidable = require('formidable');
var fs = require('fs');
var session = require('express-session');
var cors=require('cors');

app.set('views', __dirname + '/public');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors({ origin:true, credentials: true }));
app.use('/uploads', express.static(process.env.USER_UPLOADS));


app.post('/upload', function(req, res) {
    var user_folder = "path/to/directory/";
    var form = new formidable.IncomingForm();
    form.multiples = true;
    form.uploadDir = path.join(__dirname, process.env.USER_UPLOADS + user_folder);
    form.on('file', function(field, file) { fs.rename(file.path, path.join(form.uploadDir, file.name)); });
    form.on('error', function(err) { console.log('An error has occured: \n' + err); });
    form.on('end', function() { res.end('success'); });

    // Note the changes here
    form.parse(req, (error, fields, files) => {
      console.log(JSON.stringify({
        fields, // { directory: "path/to/directory" }
        files // contains the uploaded files
    }), null, 2);
  });
});


var server = app.listen(3000, function(){
    console.log('Server listening on port 3000');
});
根据位于的文档,
form.parse
可以使用可选的回调函数

解析包含表单数据的传入node.js请求。如果提供了cb,则收集所有字段和文件并将其传递给回调:


你研究过NPM软件包吗?谢谢,它对我有用。太棒了。很高兴听到。你检查了我的答案吗?你试过使用body parser npm吗?对不起,也许你不清楚我的问题,所以让我从我的js脚本中再次澄清一下,我正在将目录地址发送到文件将保存为formData的位置。append('directory','path/to/directory');我需要在后端使用这些数据,如
var user_folder=“path/to/directory/”。另一件事我不知道为什么,但是
主体解析器
强大的
不能一起工作。这个操作运行了将近一分钟,返回`Error:Request aborted`我甚至运行了
console.log(req.body)
console.log(form)
,但找不到我的目录变量值。是的,这就是我需要的,尽管最后我无法使用它。似乎我无法将文件上传到字段中定义的动态位置。但现在我可以访问它了。
require('dotenv').load();
var express = require('express');
var app = express();
var path = require('path');
var bodyParser = require('body-parser');
var formidable = require('formidable');
var fs = require('fs');
var session = require('express-session');
var cors=require('cors');

app.set('views', __dirname + '/public');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cors({ origin:true, credentials: true }));
app.use('/uploads', express.static(process.env.USER_UPLOADS));


app.post('/upload', function(req, res) {
    var user_folder = "path/to/directory/";
    var form = new formidable.IncomingForm();
    form.multiples = true;
    form.uploadDir = path.join(__dirname, process.env.USER_UPLOADS + user_folder);
    form.on('file', function(field, file) { fs.rename(file.path, path.join(form.uploadDir, file.name)); });
    form.on('error', function(err) { console.log('An error has occured: \n' + err); });
    form.on('end', function() { res.end('success'); });

    // Note the changes here
    form.parse(req, (error, fields, files) => {
      console.log(JSON.stringify({
        fields, // { directory: "path/to/directory" }
        files // contains the uploaded files
    }), null, 2);
  });
});


var server = app.listen(3000, function(){
    console.log('Server listening on port 3000');
});
form.parse(req, function(err, fields, files) {
  // ... 
});