如何在控制器中使用多重功能而不是在路由中使用

我想multer在控制器文件中使用函数但是当我使用邮递员表单数据主体上传图像时问题是req.body不确定的这是我如何使用函数的代码 multer链接但我想在我的控制器中使用它

正如您在下面的代码中看到的,我想如何使用它

const multerHelper = require("../helpers/multer_helper");


Documents: async (req, res) => {

    console.log(req.body)

    if (!req.body.id) {

        console.log(req.body)

        logger.warn(error.MANDATORY_FIELDS);

        return res.status(500).send(error.MANDATORY_FIELDS)

    }


    try {

        multerHelper.createUserImage

        let result = error.OK

        logger.info(result);

        return res.status(200).send(result)


    } catch (err) {

        logger.warn(err);

        console.log(err);

        return res.status(500).send(error.SERVER_ERROR)

    }

}

但它会抛出像req.bodyundefine这样的错误


req.body 空图像

http://img3.mukewang.com/644a234d000108ba05880095.jpg

邮递员表单数据图像

http://img4.mukewang.com/644a23570001ac2f06530180.jpg



阿晨1998
浏览 154回答 1
1回答

心有法竹

如果你想在控制器中使用multer它,你只能在路由中使用函数和对象,而不是在控制器中,你必须在控制器中编写存储和上传函数,这里我使用了错误multer处理并且我正在上传多个图像Documents: async (req, res) => {        if (!req.headers.room_id) {            logger.warn(error.MANDATORY_FIELDS);            return res.status(500).send(error.MANDATORY_FIELDS)        }        try {            let storage = multer.diskStorage({                destination: function (req, file, cb) {                    let id = req.headers.room_id;                    let path = `tmp/daily_gasoline_report/${id}`;                    fsextra.mkdirsSync(path);                    cb(null, path);                },                filename: function (req, file, cb) {                    // console.log(file);                                let extArray = file.mimetype.split("/");                    let extension = extArray[extArray.length - 1];                    cb(null, file.fieldname + '-' + Date.now() + "." + extension);                }            })            var upload = multer({ storage: storage }).array('images', 100);            upload(req, res, function (err) {                if (err) {                    console.log(err);                    return res.end("Error uploading file.");                } else {                    res.end("File has been uploaded");                }            });            let result = error.OK            logger.info(result);            return res.status(200).send(result)        } catch (err) {            logger.warn(err);            console.log(err);            return res.status(500).send(error.SERVER_ERROR)        }    }

慕桂英4014372

你有解析器吗?你如何解析数据?你需要使用一些东西来为你提供这样的数据: https: //www.npmjs.com/package/express-fileupload这个包帮助你解析表单数据和文件数据本身。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript