[英]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.