javascript - 使用 Ajax 将参数和文件发送到 NodeJs

标签 javascript ajax express post

我的代码有问题,但我不知道问题出在哪里。

我有这个 AJAX 部分,它从表单和参数中获取文件并将其发送到我的 Nodejs 服务器:

var layerID = 2;
var formData = new FormData($("#formid")[0]);
formData.append('layer', layerID);
  $.ajax({
     url: "http://localhost:3000/file-upload",
     type: 'POST',
     data: formData,
     cache: false,
     contentType: false,
     processData: false
  });

我有这部分 express ,应该接收文件和参数:

app.use(bodyParser.urlencoded({
   extended: false
}))

app.post('/file-upload', function (req, res) {
  console.log('params: ' + req.params);
    console.log('body: ' + req.body);
    console.log('query: ' + req.query);
  upload(req, res, function (err) {
    if (err) {
      errorHandler
      return
    } else {
      successHandler
    }
  })
})

我的问题是我正确接收了文件,但在我的 Nodejs 服务器中没有收到参数“layer”。

最佳答案

您正在发布多部分数据,但您只有一个用于 urlencoded 数据的正文解析器。

请参阅 body parser 的文档:

This does not handle multipart bodies, due to their complex and typically large nature. For multipart bodies, you may be interested in the following modules:

  • busboy and connect-busboy
  • multiparty and connect-multiparty
  • formidable
  • multer

关于javascript - 使用 Ajax 将参数和文件发送到 NodeJs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51751331/

相关文章:

javascript - Veeva CRM 中的点击流跟踪

node.js - 我可以在 express 中使用 Flatiron 的足智多谋吗?

javascript - sequelize - 无法添加外键约束

javascript - 并发 AJAX 请求不起作用。最新的请求会覆盖之前的请求

asp.net - UpdatePanel 中的 Gridview 不会在 DOM 中呈现

node.js - 如何在 jade 中的链接中添加条件?

javascript - 在 fabric js 中绘制外部边界框

javascript - 由于 superfish.com 而损坏的 Javascript

javascript - 使用 JavaScript 将标签内的元素更改为其他内容

javascript - 使用我自己的 javascript 功能包装第 3 方 Web 应用程序