正确的NodeJS代码从tmp上传文件夹中删除旧文件

我使用下面的代码从tmp上传目录中删除旧文件:

fs.readdir( dirPath, function( err, files ) { if ( err ) return console.log( err ); if (files.length > 0) { files.forEach(function( file ) { var filePath = dirPath + file; fs.stat( filePath, function( err, stat ) { if ( err ) return console.log( err ); var livesUntil = new Date(); livesUntil.setHours(livesUntil.getHours() - 1); if ( stat.ctime < livesUntil ) { fs.unlink( filePath, function( err ) { if ( err ) return console.log( err ); }); } }); }); } }); 

我每小时运行一次。 这在大多数情况下是有效的。 但是,我发现偶尔上传会在上传过程中意外消失。 我现在发生的事情是这个代码在stat.ctime被设置之前正在上传的时候运行,所以在完成之前它会被删除。 有关如何防止这种情况的任何build议?

谢谢!

       

网上收集的解决方案 "正确的NodeJS代码从tmp上传文件夹中删除旧文件"

为什么不清理每个上传?

 var fs = require('fs'); var fsio; (function (fsio) { var uploader = (function () { function uploader() { } uploader.prototype.writeFile = function (fn, data, cb) { var tempDest = '/tmp/' + fn; // .. your write logic .. // cleanup cb(tempDest); }; uploader.prototype.cleanup = function (fileDest) { // .. your cleanup logic - move or copy/del .. fs.unlink(fileDest); }; uploader.prototype.upload = function (fn, data) { this.writeFile(fn, data, this.cleanup); }; return uploader; })(); fsio.uploader = uploader; })(fsio || (fsio = {})); 

用法:

 var fileupload = new fsio.uploader(); fileupload.upload("monkey.gif", []);