我试图使用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函数,这是我 如何在功能之外获取 var文件?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;
}