nl_tokens: 完成分块上传
pl_tokens: function multipartComplete ( params , callback ) { var self = this ; var UploadId = params . UploadId ; var Parts = params [ 'Parts' ] ; for ( var i = 0 , len = Parts . length ; i < len ; i ++ ) { if ( Parts [ i ] [ 'ETag' ] . indexOf ( '"' ) === 0 ) { continue ; } Parts [ i ] [ 'ETag' ] = '"' + Parts [ i ] [ 'ETag' ] + '"' ; } var xml = util . json2xml ( { CompleteMultipartUpload : { Part : Parts } } ) ; var headers = params . Headers ; headers [ 'Content-Type' ] = 'application/xml' ; headers [ 'Content-MD5' ] = util . binaryBase64 ( util . md5 ( xml ) ) ; submitRequest . call ( this , { Action : 'name/cos:CompleteMultipartUpload' , method : 'POST' , Bucket : params . Bucket , Region : params . Region , Key : params . Key , qs : { uploadId : UploadId } , body : xml , headers : headers , } , function ( err , data ) { if ( err ) { return callback ( err ) ; } var url = getUrl ( { ForcePathStyle : self . options . ForcePathStyle , protocol : self . options . Protocol , domain : self . options . <mask> , bucket : params . Bucket , region : params . Region , object : params . Key , isLocation : true , } ) ; var CompleteMultipartUploadResult = data . CompleteMultipartUploadResult || { } ; var result = util . extend ( CompleteMultipartUploadResult , { Location : url , statusCode : data . statusCode , headers : data . headers , } ) ; callback ( null , result ) ; } ) ; }