How can I delete folder on s3 with node.js?

后端 未结 7 1269
误落风尘
误落风尘 2021-01-30 10:48

Yes, I know. There is no folder concept on s3 storage. but I really want to delete a specific folder from s3 with node.js. I tried two solutions, but both didn\'t work. My code

7条回答
  •  情书的邮戳
    2021-01-30 11:00

    You can use aws-sdk module for deleting folder. Because you can only delete a folder when it is empty, you should first delete the files in it. I'm doing it like this :

    function emptyBucket(bucketName,callback){
      var params = {
        Bucket: bucketName,
        Prefix: 'folder/'
      };
    
      s3.listObjects(params, function(err, data) {
        if (err) return callback(err);
    
        if (data.Contents.length == 0) callback();
    
        params = {Bucket: bucketName};
        params.Delete = {Objects:[]};
    
        data.Contents.forEach(function(content) {
          params.Delete.Objects.push({Key: content.Key});
        });
    
        s3.deleteObjects(params, function(err, data) {
          if (err) return callback(err);
          if(data.Contents.length == 1000)emptyBucket(bucketName,callback);
          else callback();
        });
      });
    }
    

提交回复
热议问题