function( block ) {
                var me = this,
                    file = block.file,
                    promise;
    
                me.pool.push( block );
                me.remaning++;
    
                // 如果没有分片，则直接使用原始的。
                // 不会丢失content-type信息。
                block.blob = block.chunks === 1 ? file.source :
                        file.source.slice( block.start, block.end );
    
                // hook, 每个分片发送之前可能要做些异步的事情。
                promise = me.request( 'before-send', block, function() {
    
                    // 有可能文件已经上传出错了，所以不需要再传输了。
                    if ( file.getStatus() === Status.PROGRESS ) {
                        me._doSend( block );
                    } else {
                        me._popBlock( block );
                        Base.nextTick( me.__tick );
                    }
                });
    
                // 如果为fail了，则跳过此分片。
                promise.fail(function() {
                    if ( file.remaning === 1 ) {
                        me._finishFile( file ).always(function() {
                            block.percentage = 1;
                            me._popBlock( block );
                            me.owner.trigger( 'uploadComplete', file );
                            Base.nextTick( me.__tick );
                        });
                    } else {
                        block.percentage = 1;
                        me._popBlock( block );
                        Base.nextTick( me.__tick );
                    }
                });
            }
function( block ) {
                var me = this,
                    file = block.file,
                    promise;
    
                me.pool.push( block );
                me.remaning++;
    
                // 如果没有分片，则直接使用原始的。
                // 不会丢失content-type信息。
                block.blob = block.chunks === 1 ? file.source :
                        file.source.slice( block.start, block.end );
    
                // hook, 每个分片发送之前可能要做些异步的事情。
                promise = me.request( 'before-send', block, function() {
    
                    // 有可能文件已经上传出错了，所以不需要再传输了。
                    if ( file.getStatus() === Status.PROGRESS ) {
                        me._doSend( block );
                    } else {
                        me._popBlock( block );
                        Base.nextTick( me.__tick );
                    }
                });
    
                // 如果为fail了，则跳过此分片。
                promise.fail(function() {
                    if ( file.remaning === 1 ) {
                        me._finishFile( file ).always(function() {
                            block.percentage = 1;
                            me._popBlock( block );
                            me.owner.trigger( 'uploadComplete', file );
                            Base.nextTick( me.__tick );
                        });
                    } else {
                        block.percentage = 1;
                        me._popBlock( block );
                        Base.nextTick( me.__tick );
                    }
                });
            }
function ( block ) { var me = this , file = block . file , promise ; me . pool . push ( block ) ; me . remaning ++ ; // 如果没有分片，则直接使用原始的。 // 不会丢失content-type信息。 block . blob = block . chunks === 1 ? file . source : file . source . slice ( block . start , block . end ) ; // hook, 每个分片发送之前可能要做些异步的事情。 promise = me . request ( 'before-send' , block , function ( ) { // 有可能文件已经上传出错了，所以不需要再传输了。 if ( file . getStatus ( ) === Status . PROGRESS ) { me . _doSend ( block ) ; } else { me . _popBlock ( block ) ; Base . nextTick ( me . __tick ) ; } } ) ; // 如果为fail了，则跳过此分片。 promise . fail ( function ( ) { if ( file . remaning === 1 ) { me . _finishFile ( file ) . always ( function ( ) { block . percentage = 1 ; me . _popBlock ( block ) ; me . owner . trigger ( 'uploadComplete' , file ) ; Base . nextTick ( me . __tick ) ; } ) ; } else { block . percentage = 1 ; me . _popBlock ( block ) ; Base . nextTick ( me . __tick ) ; } } ) ; }
开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。
开始上传，可以被掉过。如果promise被reject了，则表示跳过此分片。
send a file to the server