angularjs – 文件上传:如果目录不存在则创建目录
发布时间:2020-12-17 17:14:39 所属栏目:安全 来源:网络整理
导读:我在使用强大的NodeJS处理文件上传.这适合我.现在我想更多地构建上传内容.我通过上传传递了一个角度的字段,这是一个project_id.我想在我的上传中创建一个文件夹,以此ID命名并在其中写入文件. 所以我检查目录是否存在,如果不存在,我用fs.mkdir创建它,然后将文
我在使用强大的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 }); }); } }); }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |