nl_tokens: 抛弃分块上传任务 / * AsyncLimit ( 抛弃上传任务的并发量 ) ， UploadId ( 上传任务的编号，当 Level 为 task 时候需要 ) Level ( 抛弃分块上传任务的级别，task : 抛弃指定的上传任务，file ： 抛弃指定的文件对应的上传任务，其他值 ：抛弃指定Bucket 的全部上传任务 )
pl_tokens: function abortUploadTask ( params , callback ) { var Bucket = params . Bucket ; var Region = params . Region ; var Key = params . Key ; var UploadId = params . UploadId ; var Level = params . Level || 'task' ; var AsyncLimit = params . AsyncLimit ; var self = this ; var ep = new EventProxy ( ) ; ep . on ( 'error' , function ( errData ) { return callback ( errData ) ; } ) ; // 已经获取到需要抛弃的任务列表 ep . on ( 'get_abort_array' , function ( AbortArray ) { abortUploadTaskArray . call ( self , { Bucket : Bucket , Region : Region , Key : Key , Headers : params . Headers , AsyncLimit : AsyncLimit , AbortArray : AbortArray } , function ( err , data ) { if ( err ) { return callback ( err ) ; } callback ( null , data ) ; } ) ; } ) ; if ( Level === 'bucket' ) { // Bucket 级别的任务抛弃，抛弃该 Bucket 下的全部上传任务 wholeMultipartList . call ( <mask> , { Bucket : Bucket , Region : Region } , function ( err , data ) { if ( err ) { return callback ( err ) ; } ep . emit ( 'get_abort_array' , data . UploadList || [ ] ) ; } ) ; } else if ( Level === 'file' ) { // 文件级别的任务抛弃，抛弃该文件的全部上传任务 if ( ! Key ) return callback ( { error : 'abort_upload_task_no_key' } ) ; wholeMultipartList . call ( self , { Bucket : Bucket , Region : Region , Key : Key } , function ( err , data ) { if ( err ) { return callback ( err ) ; } ep . emit ( 'get_abort_array' , data . UploadList || [ ] ) ; } ) ; } else if ( Level === 'task' ) { // 单个任务级别的任务抛弃，抛弃指定 UploadId 的上传任务 if ( ! UploadId ) return callback ( { error : 'abort_upload_task_no_id' } ) ; if ( ! Key ) return callback ( { error : 'abort_upload_task_no_key' } ) ; ep . emit ( 'get_abort_array' , [ { Key : Key , UploadId : UploadId } ] ) ; } else { return callback ( { error : 'abort_unknown_level' } ) ; } }