angularjs – 文件上传:如果目录不存在则创建目录

前端之家收集整理的这篇文章主要介绍了angularjs – 文件上传:如果目录不存在则创建目录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用强大的NodeJS处理文件上传.这适合我.现在我想更多地构建上传内容.我通过上传传递了一个角度的字段,这是一个project_id.我想在我的上传中创建一个文件夹,以此ID命名并在其中写入文件.

所以我检查目录是否存在,如果不存在,我用fs.mkdir创建它,然后将文件写入它.试试这个,我得到一个EINVAL,重命名错误和一个HTTP 500状态代码.

这是我的尝试,任何人都知道如何解决这个问题?

app.post('/uploads/',function(req,res,next){
        var form = new formidable.IncomingForm();
        form.keepExtensions = true;
        form.parse(req,function(err,fields,files){
            if (err) next (err);
            fs.exists('uploads/' + fields.project_id + '/',function (exists){
                if (exists) {
                    fs.rename(files.upload.path,'uploads/' + fields.project_id + '/' +files.upload.name,function(err){
                        if (err) next (err);
                        res.render('profile.ejs',{
                            user: req.user
                        });
                    });
                } else {
                    fs.mkdir('uploads/' + fields.project_id + '/',function (err){
                        if (err) next (err);
                    });
                    fs.rename(files.upload.path,'uploads/' + fields.project_id + '/' + files.upload.name,function(err){
                        if(err) next (err);
                        res.render('profile.ejs',{
                            user:req.user
                        });
                    });
                }
            });
        });
    });

解决方法

您正在尝试在创建目录之前重命名文件.此外,不建议使用 fs.exists,将来不推荐使用该功能.

我对您的代码进行了一些更改,您可以使用路径模块来创建路径.此外,尝试创建目录,无论它是否已存在.如果存在,请忽略错误代码EEXIST.

更新的代码

// add this to the beggining
var path = require('path');

app.post('/uploads',next){
    var form = new formidable.IncomingForm();
    form.keepExtensions = true;
    form.parse(req,files){
        if (err) next (err);
        fs.mkdir(path.resolve('uploads',fields.project_id),function (err) {
            if (err && err !== 'EEXIST') {
                next(err);
            } else {
                fs.rename(files.upload.path,path.resolve('uploads',fields.project_id,files.upload.name),function(err){
                    if(err) next (err);
                    res.render('profile.ejs',{
                        user:req.user
                    });
                });
            }
        });
    });
});

猜你在找的Angularjs相关文章