【发布时间】:2022-01-01 16:48:45
【问题描述】:
我创建了一个应用程序,它为每组上传的图像创建一个文件夹。在本地主机上运行我的应用程序时我没有任何问题,但是当我上传我的页面并尝试上传图片组时,页面显示:
{"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);
}
});
【问题讨论】:
标签: node.js express server mkdir