function (PartList, callback) {
        var PartCount = PartList.length;
        // 如果没有分片，通过
        if (PartCount === 0) {
            return callback(null, true);
        }
        // 检查分片数量
        if (PartCount > SliceCount) {
            return callback(null, false);
        }
        // 检查分片大小
        if (PartCount > 1) {
            var PartSliceSize = Math.max(PartList[0].Size, PartList[1].Size);
            if (PartSliceSize !== SliceSize) {
                return callback(null, false);
            }
        }
        // 逐个分片计算并检查 ETag 是否一致
        var next = function (index) {
            if (index < PartCount) {
                var Part = PartList[index];
                getChunkETag(Part.PartNumber, function (err, chunk) {
                    if (chunk && chunk.ETag === Part.ETag && chunk.Size === Part.Size) {
                        next(index + 1);
                    } else {
                        callback(null, false);
                    }
                });
            } else {
                callback(null, true);
            }
        };
        next(0);
    }
function (PartList, callback) {
        var PartCount = PartList.length;
        
        if (PartCount === 0) {
            return callback(null, true);
        }
        
        if (PartCount > SliceCount) {
            return callback(null, false);
        }
        
        if (PartCount > 1) {
            var PartSliceSize = Math.max(PartList[0].Size, PartList[1].Size);
            if (PartSliceSize !== SliceSize) {
                return callback(null, false);
            }
        }
        
        var next = function (index) {
            if (index < PartCount) {
                var Part = PartList[index];
                getChunkETag(Part.PartNumber, function (err, chunk) {
                    if (chunk && chunk.ETag === Part.ETag && chunk.Size === Part.Size) {
                        next(index + 1);
                    } else {
                        callback(null, false);
                    }
                });
            } else {
                callback(null, true);
            }
        };
        next(0);
    }
function ( PartList , callback ) { var PartCount = PartList . length ; // 如果没有分片，通过 if ( PartCount === 0 ) { return callback ( null , true ) ; } // 检查分片数量 if ( PartCount > SliceCount ) { return callback ( null , false ) ; } // 检查分片大小 if ( PartCount > 1 ) { var PartSliceSize = Math . max ( PartList [ 0 ] . Size , PartList [ 1 ] . Size ) ; if ( PartSliceSize !== SliceSize ) { return callback ( null , false ) ; } } // 逐个分片计算并检查 ETag 是否一致 var next = function ( index ) { if ( index < PartCount ) { var Part = PartList [ index ] ; getChunkETag ( Part . PartNumber , function ( err , chunk ) { if ( chunk && chunk . ETag === Part . ETag && chunk . Size === Part . Size ) { next ( index + 1 ) ; } else { callback ( null , false ) ; } } ) ; } else { callback ( null , true ) ; } } ; next ( 0 ) ; }
通过和文件的 md5 对比，判断 UploadId 是否可用
通过和文件的 md5 对比，判断 UploadId 是否可用