Javascript 在expressjs中创建相册

Javascript 在expressjs中创建相册,javascript,node.js,express,Javascript,Node.js,Express,我正在尝试在MEVN中创建一个相册应用程序 req.body.ALBUM将成为文件夹的名称,那么req.body.DESCRIPTION只是它的描述 我的代码完成的只是它可以创建文件夹,但它创建了一个未定义的文件夹,然后将图像保存在其中 注意:我试图创建一个空文件夹,并将目录更改为我的示例文件夹,它可以成功地将图像保存在那里 这是我的完整代码,它只能创建文件夹,但不能将图像保存在其中,而是将图像保存在未定义的文件夹中 router.post('/album', (req, res) =>

我正在尝试在MEVN中创建一个相册应用程序

req.body.ALBUM将成为文件夹的名称,那么req.body.DESCRIPTION只是它的描述

我的代码完成的只是它可以创建文件夹,但它创建了一个未定义的文件夹,然后将图像保存在其中

注意:我试图创建一个空文件夹,并将目录更改为我的示例文件夹,它可以成功地将图像保存在那里

这是我的完整代码,它只能创建文件夹,但不能将图像保存在其中,而是将图像保存在未定义的文件夹中

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”);>});此代码是异步的,这意味着即使此操作未完成,它也将移动到下一行代码并执行它。这就是为什么在下一行
目录中
是未定义的