繁体   English   中英

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

[英]Nodejs delete folder on Amazon S3 with aws-sdk

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

1.创建文件夹

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

}); 

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) {

});

3.删除文件夹

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

});

如果文件夹没有照片,删除功能效果很好。 但它包含照片,删除将不起作用。
请帮忙。 感谢大家的支持。

这里的问题是一个概念上的问题,从第 1 步开始。

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

以尾随“/”命名的对象在 Amazon S3 控制台中显示为文件夹。

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

没有必要这样做——即使没有创建这个对象,使用这个键前缀创建对象仍然会导致控制台显示一个文件夹。 从同一页面:

Amazon S3 具有扁平结构,没有您在典型文件系统中看到的层次结构。 但是,为了组织简单起见,Amazon S3 控制台支持将文件夹概念作为对对象进行分组的一种方式。 Amazon S3 通过为对象使用键名前缀来实现这一点。

由于在步骤 1 中您实际上并未创建文件夹,因此删除占位符对象也不会删除文件夹是有道理的。

文件夹实际上并不存在于 S3 中——它们只是用于控制台中的显示目的——因此不能正确地将对象称为“在”文件夹中。 删除文件夹“中”所有对象的唯一方法是单独明确删除对象。 同样,重命名文件夹的唯一方法是重命名其中的对象……而重命名对象的唯一方法是使用新键创建对象的副本,然后删除旧对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM