首页 > 解决方案 > Multer express 不返回函数外的文件名

问题描述

我尝试使用 multer 中间件上传图像并在函数之外获取图像名称。它没有返回我的文件名,但是当我console.log在函数内部使用时,它返回文件名。

这是我的快速控制器,我称之为上传功能

const uploadData = await utils.uploads.uploadImage('myImage', req);

这是我的上传图片

static async uploadImage(imgName, req, res ) {
   //call function setupPath
    const setupPath = await this.setupPath();
    try {
        let upload = await  multer({ storage: setupPath }).single(imgName);
        const storeImage = await this.storeImage(upload, req, res);
    } catch (e) {
        console.error(`try/catch(${e})`);
        return false;
    }
}

这是我的函数 setupPath

static async setupPath() {
      const setup = await multer.diskStorage({
                       destination: './public/uploads/',
                       filename: function (req, file, cb) {
                       cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname)); }
                    })
        return setup;
}

这是我的 StoreImage 函数,这是我console.log req.file -> 它返回文件数据的问题,但是当我console.log在函数之外它是未定义的

static async storeImage(upload, req, res) {
    const uploads = await upload(req, res, (err) => {
        if (err) {
            // res.send(err);
            return 'y';
        } else {
            console.log(req.file) // here return data
            var file = req.file
        }
    })

    console.log(file) // here return undefined
     return uploads;
}

如何在函数之外获取var 文件

标签: javascriptnode.jsexpressmulter

解决方案


推荐阅读