我怎样才能用node.js在s3上删除文件夹?

是的我知道。 s3存储没有文件夹概念。 但我真的想要用node.js从s3中删除一个特定的文件夹。 我尝试了两个解决scheme,但都没有工作。 我的代码如下:解决scheme1:直接删除文件夹。

var key='level/folder1/folder2/'; var strReturn; var params = {Bucket: MyBucket}; var s3 = new AWS.S3(params); s3.client.listObjects({ Bucket: MyBucket, Key: key }, function (err, data) { if(err){ strReturn="{\"status\":\"1\"}"; }else{ strReturn=+"{\"status\":\"0\"}"; } res.send(returnJson); console.log('error:'+err+' data:'+JSON.stringify(data)); }); 

实际上,我在folder2下有很多文件。 我可以从folder2中删除单个文件,如果我这样定义键:var key ='level / folder1 / folder2 / file1.txt',但是当我删除一个文件夹时(key ='level / folder1 / folder2 / “)。 解决scheme2:我试图设置过期到一个对象,当我上传这个文件或文件夹到S3。 代码如下:

 s3.client.putObject({ Bucket: Camera_Bucket, Key: key, ACL:'public-read', Expires: 60 } 

但是也没有。 上传完成后,我检查了该文件的属性。 它表明没有任何有效期限的价值:

 Expiry Date:none Expiration Rule:N/A 

我怎样才能用node.js在s3上删除文件夹?

您可以使用aws-sdk模块来删除文件夹。 因为你可以删除文件夹,当它是空的,你应该删除它的文件。 我正在这样做。

 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(); }); }); }