Nodejs使用aws-sdk删除Amazon S3上的文件夹

Vu *_*Duy 1 amazon-s3 amazon-web-services node.js

我正面临删除包含Amazon S3上的照片的文件夹的问题

1.创建文件夹

var params = {Bucket: S3_BUCKET, Key: "test/", ACL:"public-read"};  
s3.putObject(params, function(err, data) {  

}); 
Run Code Online (Sandbox Code Playgroud)

2.上传照片

var body = fs.createReadStream(filePath);  
var params = {Bucket: S3_BUCKET, Key: "test/flower.jpgg", Body: body, ContentType:"image/jpeg", ACL:"public-read"};  

s3.upload(params, function(err, data) {

});
Run Code Online (Sandbox Code Playgroud)

3.删除文件夹

var params = {Bucket: S3_BUCKET, Key: "test/"};  
s3.deleteObject(params, function(err, data) {

});
Run Code Online (Sandbox Code Playgroud)

如果文件夹没有照片,删除功能效果很好.但它包含照片,删除将无法正常工作.
请帮忙.感谢所有支持.

Mic*_*bot 7

这里的问题是概念问题,从第1步开始.

这不会创建文件夹.它创建一个占位符对象,控制台将显示为文件夹.

以尾部"/"命名的对象显示为Amazon S3控制台中的文件夹.

http://docs.aws.amazon.com/AmazonS3/latest/UG/FolderOperations.html

没有必要这样做 - 使用此键前缀创建对象仍将导致控制台显示文件夹,即使不创建此对象也是如此.从同一页面:

Amazon S3具有扁平结构,没有您在典型文件系统中看到的层次结构.但是,为了简化组织,Amazon S3控制台支持将文件夹概念作为对对象进行分组的方法.Amazon S3通过使用对象的键名前缀来完​​成此操作.

由于在步骤1中您实际上并未创建文件夹,因此删除占位符对象也不会删除该文件夹.

文件夹实际上并不存在于S3中 - 它们仅用于控制台中的显示目的 - 因此无法正确地将对象称为"在"文件夹中.删除文件夹中"所有"对象的唯一方法是单独显式删除对象.同样,重命名文件夹的唯一方法是重命名文件夹是重命名其中的对象...而重命名对象的唯一方法是使用新密钥复制对象,然后删除旧文件夹宾语.