首页 > 解决方案 > How to pass variable into function [ different file] using node js express

问题描述

Hi I'm working on upload image . I following in document everything work fine but I just want to make a function more dynamic .

first I've my Controller

async function store (req, res) {
  const imgName = 'imgName';
    upload(req, res, imgName, (err) => {
        if (err) {
            res.send('eror');
        } else {
            console.log(req.file);
            res.send('test');
        }
    })

}

and in upload function I create new files names helpers.js

// Here i setup path and files name 
    const storage = multer.diskStorage({
        destination: './public/uploads/',
        filename: function (req, file, cb) {
            cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname)); }
    })

// the problem are here  imgName not define How can I pass variable into const upload
const upload = multer(imgName,{
    storage: storage
}).single(imgName');


module.exports = {
    upload,
};

标签: node.jsexpress

解决方案


尝试导出upload不是预建对象的函数:

const upload = imgName => multer(imgName, { storage: storage }).single(imgName);

module.exports = { upload }

然后,您的控制器通过调用带有 imgName 参数的函数来使用

async function store (req, res) {
  const imgName = 'imgName';
    upload(imgName)(req, res, imgName, (err) => {
        if (err) {
            res.send('eror');
        } else {
            console.log(req.file);
            res.send('test');
        }
    })

}

推荐阅读