我怎么知道文件是否完全下载?

时间:2017-06-19 12:04:36

标签: javascript node.js

我在我的下载文件夹上制作了一个监听服务器(Node.js)。

每当我下载文件时,我想要散列该文件。但事实上,尽管我的文件没有完全下载,但我的服务器立刻对它进行了哈希处理。并且哈希与两个不同的文件相同。

我该如何解决这个问题。

var watcher = chokidar.watch('/home/pack/Desktop/Windows-Share', {ignored:/(^|[\/\\])\../, persistent: true});
var log = console.log.bind(console);
watcher.on('add', function(path){
  setTimeout(function(){
    var base_name = path_module.basename(path);
    var extension = base_name.split('.').pop();
    console.log(base_name);
    if(isMaliciousExtension(base_name) === 1){
        getHash(path, function(returnhash){
           findDB(mongo_url, returnhash, function(result){
if(result == 0){
                    logger.warn("File "+base_name+" khong co trong database, thuc hien luu lai.");
                    insertDB(mongo_url, returnhash);
                    createMSQLConn(dbhost, dbusername, dbpassword, dbname, function(con){
                        insertMYSQLNewFile(con, 1, base_name, extension, returnhash);
                        getId(path, function(id){
                            var myvar = setInterval(function(){
                                getFileStatus(id, function(rs){
                                    console.log(rs);
                                    if(rs == "reported")
                                        {
                                            logger.info("File "+base_name+" da duoc report.");
                                            clearInterval(myvar);
                                            getReport(id, function(report){
                                                var score = getScore(report);
                                                //console.log(score["info"]["score"]);
                                                if(score["info"]["score"] >= 4.5) {
                                                    deleteFile(path, function(err){
                                                        if(err) 
                                                            throw err;
                                                        updateMYSQLFileStatus(con, returnhash);
                                                    });
                                                }
                                                else {
                                                    logger.info("File "+base_name+" an toan.");
                                                }
                                            });
                                        }
                                    else 
                                        logger.warn("File "+base_name+" dang duoc phan tich.");
                                });
                            },5000);

                        });
                    });
}
                else {
                    logger.info("File "+ base_name + " da duoc tai ve truoc day.!");
                }
            });
        });

    } else {
        return 0;
    }
  },5000);
}).on('unlink', path => log(`File ${path} has been removed`));

0 个答案:

没有答案