快速file upload。 处理可怕的parsing错误(服务器端)

我有一个关于Npm中强大模块的问题。 我使用它来parsing来自我的Fileupload前端的传入文件,然后使用fs.rename在本地保存它。 这已经起作用了,迄今为止这么好。 现在我想介绍一种error handling,如果重命名失败,但由于某种原因,它告诉我,我有一个unhanded错误(即使处理)。

app.post('/upload/:id', function(req, res) { var type = req.query.type; console.log(type); var clubId = req.params.id; var fileName = clubId.toString(); console.log(clubId); var form = new formidable.IncomingForm(); form.uploadDir = baseUrl + "indesign_test/sticker_pdfs/" + clubId; form.on('file', function(field, file) { var originalName = file.name; if (originalName.indexOf('.pdf') >= 0 && type == '.pdf') { fs.rename(file.path, path.join(form.uploadDir, fileName + '.pdf', function(err) { if (err) console.log('Test Error: ' + err.code); // <- Error Handling here }); } else { console.log('Error Wrong Format, expected upload in Format of' + type); } }); form.on('error', function(err) { console.log('An error has occured: \n' + err); }); form.on('end', function() { res.end('success'); }); form.parse(req); }) 

相反,我得到这个不受欢迎的错误:

  events.js:182 throw er; // Unhandled 'error' event ^ Error: ENOENT: no such file or directory, open '/Users/stickerstars-it-mbp/Desktop/indesign_test/sticker_pdfs/339/upload_be8ff3bd80f5cb2bf1658493157e459f' stickertmbpsMBP:node-fileupload stickerstars-it-mbp$ 

出于某种原因,您无法保存form.uploadDir对象上的上传path。 改用常规variables。 这是更新的代码示例:

 var form = new formidable.IncomingForm(); //upload path on variable instead the form object var uploadPath = baseUrl + "indesign_test/sticker_pdfs/" + clubId; form.on('file', function(field, file) { var originalName = file.name; if (originalName.indexOf('.pdf') >= 0 && type == '.pdf') { fs.rename(file.path, path.join(uploadPath, fileName + '.pdf', function(err) { if (err) console.log('Test Error: ' + err.code); }); } else { console.log('Error Wrong Format, expected upload in Format of' + type); } }); 

在这个例子中,error handling没有问题