我正在尝试使用express框架在node.js中编写文件上传的处理程序。以下是它的原始骨架。
exports.handleUpload = function(req,res){
var temp_path = req.files.doc.path,
target_path = './uploads/' + req.files.doc.name ;
fs.rename(temp_path, target_path, function(err){
if(err){
console.log(err);
}
fs.unlink(temp_path, function(){
if(err){
console.log(err)
}
})
//Do stuff
})
}
然而,偶尔(并不总是)执行renmae函数会出错,尤其是上传大文件时。
这是控制台从错误代码中缓存的内容
{ [Error: ENOENT, rename '/tmp/16368-19661hu.pptx'] errno: 34, code: 'ENOENT', path: '/tmp/16368-19661hu.pptx' }
来自:https://github.com/joyent/node/blob/master/deps/uv/include/uv.h
XX(ENOENT, "no such file or directory")
uploads /目录确实存在,权限不是问题。如果是这样的话,每次都会失败,但事实并非如此。
答案 0 :(得分:-1)
您正在使用/ tmp目录。操作系统可能正在删除文件,因为它可以为/ tmp目录执行此操作,因此"随机性"这个问题。在进行其他操作之前,请先使用fs.exists。