multer表达不返回函数外部的文件名

时间:2019-07-01 10:36:19

标签: javascript node.js express multer

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

这里是我的控制器,我称之为上载函数

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

这是我的uploadImage

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 ->返回文件数据的问题,但是当我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文件

0 个答案:

没有答案