@@ -969,7 +969,129 @@ function sliceCopyFile() {
969969 } ) ;
970970}
971971
972- getService ( ) ;
972+ function uploadFolder ( ) {
973+ var localFolder = path . resolve ( __dirname , '../test/' ) ;
974+ var remotePrefix = 'folder/' ;
975+ fs . readdir ( localFolder , function ( err , list ) {
976+ if ( err ) return console . error ( err ) ;
977+ var files = list . map ( function ( filename ) {
978+ var Key = remotePrefix + filename ;
979+ return {
980+ Bucket : config . Bucket , // Bucket 格式:test-1250000000
981+ Region : config . Region ,
982+ Key : Key ,
983+ FilePath : path . resolve ( localFolder , filename ) ,
984+ } ;
985+ } ) ;
986+ cos . uploadFiles ( {
987+ files : files ,
988+ SliceSize : 1024 * 1024 ,
989+ onProgress : function ( info ) {
990+ var percent = parseInt ( info . percent * 10000 ) / 100 ;
991+ var speed = parseInt ( info . speed / 1024 / 1024 * 100 ) / 100 ;
992+ console . log ( '进度:' + percent + '%; 速度:' + speed + 'Mb/s;' ) ;
993+ } ,
994+ onFileFinish : function ( err , data , options ) {
995+ console . log ( options . Key + ' 上传' + ( err ? '失败' : '完成' ) ) ;
996+ } ,
997+ } , function ( err , data ) {
998+ console . log ( err || data ) ;
999+ } ) ;
1000+ } ) ;
1001+ }
1002+
1003+ function listFolder ( ) {
1004+ var _listFolder = function ( params , callback ) {
1005+ var Contents = [ ] ;
1006+ var CommonPrefixes = [ ] ;
1007+ var marker ;
1008+ var next = function ( ) {
1009+ params . Marker = marker ;
1010+ cos . getBucket ( params , function ( err , data ) {
1011+ if ( err ) return callback ( err ) ;
1012+ data && data . CommonPrefixes && data . CommonPrefixes . forEach ( function ( item ) {
1013+ CommonPrefixes . push ( item ) ;
1014+ } ) ;
1015+ data && data . Contents && data . Contents . forEach ( function ( item ) {
1016+ Contents . push ( item ) ;
1017+ } ) ;
1018+ if ( data . IsTruncated === 'true' ) {
1019+ marker = data . NextMarker ;
1020+ next ( ) ;
1021+ } else {
1022+ callback ( null , {
1023+ CommonPrefixes : CommonPrefixes ,
1024+ Contents : Contents ,
1025+ } ) ;
1026+ }
1027+ } ) ;
1028+ } ;
1029+ next ( ) ;
1030+ } ;
1031+ _listFolder ( {
1032+ Bucket : config . Bucket ,
1033+ Region : config . Region ,
1034+ Delimiter : '/' , // 如果按目录列出文件传入该分隔符,如果要深度列出文件不传改参数
1035+ Prefix : 'folder/' , // 要列出的目录前缀
1036+ } , function ( err , data ) {
1037+ console . log ( err || data ) ;
1038+ } ) ;
1039+ }
1040+
1041+ function deleteFolder ( ) {
1042+ var _deleteFolder = function ( params , callback ) {
1043+ var deletedList = [ ] ;
1044+ var errorList = [ ] ;
1045+ var marker ;
1046+ var next = function ( ) {
1047+ params . Marker = marker ;
1048+ cos . getBucket ( params , function ( err , data ) {
1049+ if ( err ) return callback ( err ) ;
1050+ var Objects = [ ] ;
1051+ if ( data && data . Contents && data . Contents . length ) {
1052+ data . Contents . forEach ( function ( item ) {
1053+ Objects . push ( { Key : item . Key } ) ;
1054+ } ) ;
1055+ }
1056+ var afterDeleted = function ( ) {
1057+ if ( data . IsTruncated === 'true' ) {
1058+ marker = data . NextMarker ;
1059+ next ( ) ;
1060+ } else {
1061+ callback ( null , { Deleted : deletedList , Error : errorList } ) ;
1062+ }
1063+ } ;
1064+ if ( Objects . length ) {
1065+ cos . deleteMultipleObject ( {
1066+ Bucket : params . Bucket ,
1067+ Region : params . Region ,
1068+ Objects : Objects ,
1069+ } , function ( err , data ) {
1070+ data . Deleted && data . Deleted . forEach ( function ( item ) {
1071+ deletedList . push ( item ) ;
1072+ } ) ;
1073+ data . Error && data . Error . forEach ( function ( item ) {
1074+ errorList . push ( item ) ;
1075+ } ) ;
1076+ afterDeleted ( ) ;
1077+ } ) ;
1078+ } else {
1079+ afterDeleted ( ) ;
1080+ }
1081+ } ) ;
1082+ } ;
1083+ next ( ) ;
1084+ } ;
1085+ _deleteFolder ( {
1086+ Bucket : config . Bucket ,
1087+ Region : config . Region ,
1088+ Prefix : 'folder/' , // 要列出的目录前缀
1089+ } , function ( err , data ) {
1090+ console . log ( err || data ) ;
1091+ } ) ;
1092+ }
1093+
1094+ // getService();
9731095// getAuth();
9741096// getV4Auth();
9751097// getObjectUrl();
@@ -1019,3 +1141,6 @@ getService();
10191141// restartTask();
10201142// uploadFiles();
10211143// sliceCopyFile();
1144+ // uploadFolder();
1145+ // listFolder();
1146+ // deleteFolder();
0 commit comments