【问题标题】:why request body is blank in node js + react?为什么节点js + react中的请求正文为空白?
【发布时间】:2019-12-07 03:54:18
【问题描述】:

我正在使用FormData 发送发布请求。但是当我检查节点服务器时,我的bodyblanked 为什么? 我执行以下步骤

 let formData = new FormData();
                // add one or more of your files in FormData
                // again, the original file is located at the `originFileObj` key
                formData.append("file", values['Temp_id_card'].fileList[0].originFileObj);
                formData.append("Emp No",values['Emp No'].toLowerCase())
                formData.append("Remarks",values['Remarks'])
                formData.append("UpdatedStatus",values['Status'])
                formData.append("id",id)
                formData.append("Att Date",attDate)

这样发送数据

export const sendPostRequest1 = (url, data, config = {}) => {
    let updatedConfig = {
        headers: {Authorization: `Bearer ${getAuthToken()}` || ""},
        ...config
    };
    return axios.post(url, data, updatedConfig);
}

当我检查network时,点击它显示数据正在发送

但是在节点服务器上调试时,为什么会显示空体?

节点js代码

var Storage = multer.diskStorage({
    destination: function(req, file, callback) {
        if(req.user.userId === req.body.userId){
            callback(null, "./Images");
        }else {
            throw new AuthenticationError("Unauthorized User");
        }

    },
    filename: function(req, file, callback) {
        callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
    }
});
var upload = multer({
    storage: Storage
}).array("file", 1); //Field name and max count
router.post('/upload', (req, res) => {
    upload(req, res, function(err) {
        if (err) {
            return res.end("Something went wrong!");
        }
        return res.end("File uploaded successfully!.");
    });
});

当我检查此 if(req.user.userId === req.body.userId){ 行时,req.body 是空对象?

我还添加了这个我的中间件

app.use(bodyParser.json({ limit: "100mb"}));
    app.use(bodyParser.urlencoded({ limit: "50mb",extended: false }));
    app.use(requestLogger);
    app.use(helmet());

【问题讨论】:

  • 如果是本地主机是可以的,但是对于远程服务应该改变url。另一个认为 var express = require('express'); var app = express(); .所以 app.post 安装了 router.post

标签: javascript node.js reactjs express multipartform-data


【解决方案1】:

同样的问题(Angular+NodeJs),并通过中间件的帮助解决。

随便写
router.post('/upload', upload.single('file'), (req, res, next) => {
而不是
router.post('/upload', (req, res) => {

For more details

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2020-08-30
    • 1970-01-01
    • 2016-04-04
    • 2020-02-17
    相关资源
    最近更新 更多