code: function calcMd5(file, opt, callback) {
      if(typeof opt == 'function') {
          callback = opt;
          opt = {};
      }
    var md5 = crypto.createHash('md5');
    //如果是流，则以流的方式处理
    if(file.isStream()) {
      var s = fs.createReadStream(file.path, {flags:'r'});
      s.on('error', function(){
          callback && callback();
      });
      //s.on('data', md5.update.bind(md5));
      s.on('data', function(d){
          md5.update(d);
      });
      s.on('end', function () {
        var hex = md5.digest('hex');      
        callback && callback(hex);
      });
    }
    else {
      md5.update(file.contents, 'utf8');
      var hex = md5.digest('hex');
      callback && callback(hex);
      return hex;
    }
  }
docs: 生成文件md5码