为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

阿晨1998 2023-04-27 15:24:17
我想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 空图像邮递员表单数据图像
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

如果你想在控制器中使用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)

        }

    }


查看完整回答
反对 回复 2023-04-27
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

你有解析器吗?你如何解析数据?你需要使用一些东西来为你提供这样的数据: https: //www.npmjs.com/package/express-fileupload

这个包帮助你解析表单数据和文件数据本身。


查看完整回答
反对 回复 2023-04-27
  • 1 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信