Javascript 在expressjs中创建相册
我正在尝试在MEVN中创建一个相册应用程序 req.body.ALBUM将成为文件夹的名称,那么req.body.DESCRIPTION只是它的描述 我的代码完成的只是它可以创建文件夹,但它创建了一个未定义的文件夹,然后将图像保存在其中 注意:我试图创建一个空文件夹,并将目录更改为我的示例文件夹,它可以成功地将图像保存在那里 这是我的完整代码,它只能创建文件夹,但不能将图像保存在其中,而是将图像保存在未定义的文件夹中Javascript 在expressjs中创建相册,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试在MEVN中创建一个相册应用程序 req.body.ALBUM将成为文件夹的名称,那么req.body.DESCRIPTION只是它的描述 我的代码完成的只是它可以创建文件夹,但它创建了一个未定义的文件夹,然后将图像保存在其中 注意:我试图创建一个空文件夹,并将目录更改为我的示例文件夹,它可以成功地将图像保存在那里 这是我的完整代码,它只能创建文件夹,但不能将图像保存在其中,而是将图像保存在未定义的文件夹中 router.post('/album', (req, res) =>
router.post('/album', (req, res) => {
let sql = "INSERT INTO GALLERY SET ALBUM = ?, DESCRIPTION = ?";
let body = [req.body.ALBUM, req.body.DESCRIPTION]
myDB.query(sql, body, (error, results) => {
if (error) {
console.log(error);
} else {
let directory = `C:\\Users\\user\\Desktop\\project\\myproject\\public\\${req.body.ALBUM}`;
fse.mkdirp(directory, err => {
if (err) {
console.log(err);
} else {
console.log("Success");
}
});
const myStorage = multer.diskStorage({
destination: directory,
filename: function (req, file, cb) {
cb(null, file.originalname + path.extname(file.originalname))
}
});
const myUploads = multer({
storage: myStorage, limits: {
//10 Million
fileSize: 10e6
}
}).array('files', 15);
if (fse.exists(directory)) {
myUploads(req, res, (error) => {
if (error) {
console.log(error);
} else {
res.send("Success")
}
});
}
else {
console.log(false);
}
}
})
})
const myStorage = multer.diskStorage({
destination: directory,
filename: function (req, file, cb) {
cb(null, file.originalname + path.extname(file.originalname))
}
});
当谈到这一部分时,req.body.ALBUM变得未定义,因此图像保存在未定义的文件夹中
router.post('/album', (req, res) => {
let sql = "INSERT INTO GALLERY SET ALBUM = ?, DESCRIPTION = ?";
let body = [req.body.ALBUM, req.body.DESCRIPTION]
myDB.query(sql, body, (error, results) => {
if (error) {
console.log(error);
} else {
let directory = `C:\\Users\\user\\Desktop\\project\\myproject\\public\\${req.body.ALBUM}`;
fse.mkdirp(directory, err => {
if (err) {
console.log(err);
} else {
console.log("Success");
}
});
const myStorage = multer.diskStorage({
destination: directory,
filename: function (req, file, cb) {
cb(null, file.originalname + path.extname(file.originalname))
}
});
const myUploads = multer({
storage: myStorage, limits: {
//10 Million
fileSize: 10e6
}
}).array('files', 15);
if (fse.exists(directory)) {
myUploads(req, res, (error) => {
if (error) {
console.log(error);
} else {
res.send("Success")
}
});
}
else {
console.log(false);
}
}
})
})
const myStorage = multer.diskStorage({
destination: directory,
filename: function (req, file, cb) {
cb(null, file.originalname + path.extname(file.originalname))
}
});
试试这个
fse.mkdirp(directory, err => {
if (err) {
console.log(err);
} else {
const myStorage = multer.diskStorage({
destination: directory,
filename: function (req, file, cb) {
cb(null, file.originalname + path.extname(file.originalname))
}
});
}
});
在这里,您正在等待第一个操作完成fse.mkdirp(目录,err=>{if(err){console.log(err);}else{//upload image Here console.log(“Success”);});等待创建目录,然后上载图像。现在两个操作是并行的你说并行是什么意思?抱歉,这对我来说是个新概念,当涉及javascript I/O编程时,并行这个词是使用事件循环处理的。在代码中执行>fse.mkdirp(目录,err=>{>if(err){>console.log(err);>}否则{>console.log(“Success”);>});此代码是异步的,这意味着即使此操作未完成,它也将移动到下一行代码并执行它。这就是为什么在下一行
目录中
是未定义的