gpt4 book ai didi

Node.js、multer 和 req.body 为空

转载 作者:IT老高 更新时间:2023-10-28 23:04:01 26 4
gpt4 key购买 nike

这是我的问题,我有一个表单,我可以在其中插入一个文件和一个字段,但我只收到文件而不是参数 test!为什么?

这是我的代码:

app.js:

var express = require('express');
var bodyParser = require('body-parser');
var app = express();
var port = 8000;
var multer = require('multer'); // v1.0.5
var storage =   multer.diskStorage({
  destination: function (req, file, callback) {
    callback(null, './uploads');
  },
  filename: function (req, file, callback) {
    callback(null, file.originalname.substring(0,file.originalname.lastIndexOf('.')) + '-' + Date.now() + file.originalname.substring(file.originalname.lastIndexOf('.'),file.originalname.length));
  }
});
var upload = multer({ storage : storage}).single('fileUpload');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.post('/api/upload',function(req,res){
console.log(req.body);
    upload(req,res,function(err) {
        if(err) {
            return res.end("Error uploading file.");
        }
        res.end("File is uploaded");
    });
});

app.listen(port, function () {
console.log('Express server inizializzato sulla porta ' + port);
});

index.html:

<html>
<head>
<title>Test upload</title>
</head>
<body>
<form name="form" action="http://localhost:8000/api/upload" method="post" enctype="multipart/form-data">
<input type="text" name="test" />
<input type="file" name="fileUpload" />
<input type="submit" value="invia" />
</form>
</body>
</html>

有人可以帮助我吗?

最佳答案

2017 年更新

From Readme

Note that req.body might not have been fully populated yet. It depends on the order that the client transmits fields and files to the server.

我通过在前端颠倒表单对象属性的顺序解决了我的问题:

    var newFormObj  = new FormData();
newFormObj.append('internalUserID', internalUserID);
newFormObj.append('listingImage', this.binaryImages[image]);

在后端:

var storage = multer.diskStorage({
destination: function (req, file, cb) {
console.log(req.body.internalUserID) // YAY, IT'S POPULATED
cb(null, 'listing-pics/')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
});

var upload = multer({ storage: storage });

关于Node.js、multer 和 req.body 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39589022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com