我的代码有问题,但我不知道问题出在哪里。
我有这个 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/