Hola, estoy trabajando en la carga de carga. Lo siguiente en el documento todo funciona bien, pero solo quiero hacer una función más dinámica.

Primero tengo mi controlador

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');
        }
    })

}

Y en la función de carga creo nombres de nuevos archivos ayudadores.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,
};
0
Ach 29 jun. 2019 a las 19:03

1 respuesta

La mejor respuesta

Trate de exportar una función upload No es un objeto preebuild:

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

module.exports = { upload }

Luego, su controlador se usa llamando a la función con los parámetros 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');
        }
    })

}
0
Marco Cavanna 29 jun. 2019 a las 16:09