强大的句柄没有上传文件错误

时间:2018-11-12 05:27:07

标签: node.js express formidable

一切正常,在我的代码中按预期运行,除非用户未上传文件,否则崩溃了我的节点应用程序。

在fs.rename部分出现错误,因为没有上传任何内容,应用无法重命名任何东西,并导致以下情况:

错误:

  

EPERM:不允许操作,重命名'C:\ Users \ xxx \ AppData \ Local \ Temp \ upload_0a145049089fa69e9df64f8d20abb362'->'C:\ Users \ xxx \ Dropbox \ Automatic NodeJS \ Login_Register + Submit-0.01 \ data \ 5be13231807fe33f14b2834a \ sdS9m'

我很难找到我的错误以及如何处理该错误,如果有人可以向我指向一些资源,以了解如何处理巨大的错误以及如何停止用户的流程,那么还没有上传任何东西,那将是很棒的。

这不是生产应用程序或类似的东西,只是我在学习如何一次处理多个功能和一个数据库。

router.post('/submit', userisSubbed, userhasTime, (req, res, next0) => {
var userId = req.user._id;
var username = req.user.email;
var isCompleted = 'No'
var jobNumber = generator.generate({
    length: 5,
    numbers: true
});
// Validate
const errors = req.validationErrors();

if (errors) {
    res.render('index', {
        errors: errors
    });}    

    else {
        var form = new formidable.IncomingForm();
        form.parse(req, function (err, fields, files) {
        var userPath = req.user._id
        var dir = './data/' + userPath + '/' + jobNumber + '/';
        if (!fs.existsSync(dir)){
            fs.mkdirSync(dir);

          }else
          {
              console.log("Directory already exist");
        }

        var oldpath = files.filetoupload.path;
        var newpath = dir + files.filetoupload.name;
        // copy the file to a new location
        fs.rename(oldpath, newpath, function (err) {
            if (err) throw err;
            console.log('renamed complete');
        const newJob = new Job({
            userId: userId,
            username: username,
            isCompleted: isCompleted,
            filepath: newpath,
            jobNumber: jobNumber,
        });
        Job.createJob(newJob, function(err, job){
            if (err) throw err;
            console.log(job);
        });
    req.flash('success_msg', 'Job Submitted...');
    res.redirect('/')
     });
  });
 }
});

0 个答案:

没有答案