我无法从服务器使用 Mkdir 创建自动文件夹



我创建了一个应用程序,为上传的每组图像创建一个文件夹。当我在localhost上运行我的应用程序时,我没有遇到任何问题,但当我上传页面并尝试上传图像组时,页面显示:

{"errno":-2,"code":"ENOENT","syscall":"mkdir","path":"src/public/img/ministerios/prueba"}

我不允许从服务器创建新的自动文件夹。

router.post('/images/ministerios',async(req,res)=>{
    try{
        const { titulo, info } = req.body;
        const ext = path.extname(req.files.image[0].originalname).toLocaleLowerCase();
        const imageDire = req.files.image[0].path; //direcion actual de la imagen
        let {filename} = req.files.image[0];
        filename = `${filename}${ext}`; //imagen con extension
        let errors = [];
        let obras = req.files.obras;
        const pathFolder = `src/public/img/ministerios/${titulo}`; // direcion carpeta a mover
        const targetPath = path.resolve(`src/public/img/ministerios/${titulo}/${filename}`); // direcion donde estara la imagen
        const viewImg = `/img/ministerios/${titulo}/${filename}`; // direcion para buscar imagen en la vista
        const espacios = titulo.replace(/s/g,'-');
        ///clases para carousel
        const claseTarget = `glider-info-${espacios}`;
        const claseDots = `dots-info-${espacios}`;
        const clasePrev = `glider-prev-info-${espacios}`;
        const claseNext = `glider-next-info-${espacios}`;
        if(ext === '.png' || ext === '.jpg' || ext === '.gif' || ext === '.jpeg'){
                if(!fs.existsSync(pathFolder)){
                    await fs.mkdir(pathFolder);
                    await fs.rename(imageDire,targetPath);
                    const obrasFolder = `src/public/img/ministerios/${titulo}/obras`;
                    await fs.mkdir(obrasFolder);
                    obras.forEach(async(obra)=>{
                        let extObra = path.extname(obra.originalname).toLocaleLowerCase();
                        let filenameObra = obra.filename;
                        filenameObra =  `${filenameObra}${extObra}`;
                        let targetPathObras = path.resolve(`src/public/img/ministerios/${titulo}/obras/${filenameObra}`);
                        obra.direView = `/img/ministerios/${titulo}/obras/${filenameObra}`;
                        await fs.rename(obra.path,targetPathObras);
                    })
                    const newMinisterio = await new Ministerio
                    ({ titulo, info, filename: viewImg, carpeta: pathFolder, dire: targetPath, obras,
                        claseTarget,claseDots,clasePrev,claseNext }); 
                    const ministerioSaved = await newMinisterio.save();
                    req.flash('success_msg','Ministerio creado correctamente');
                    res.redirect('/');
                }else{
                    await fs.unlink(imageDire);
                    obras.forEach(async(obra)=>{
                        await fs.unlink(obra.path);
                    })
                    req.flash('error_msg','Ya hay otro ministerio con este nombre');
                    res.redirect('/');
                } 
            }else{
                req.flash('error_msg','Este formato de imagén no esta permitido');
                res.redirect('/');
            }
    }catch(e){
        res.send(e);
    }
});

我尝试了一下,它很有效;

之前:

await fs.mkdir(pathFolder)

之后:

await fs.mkdir(pathFolder,{recursive: true});

最新更新