AWS S3 - 将对象移动到不同的文件夹
AWS S3 - Move an object to a different folder
有什么方法可以使用 AWS SDK(最好是 .Net)将对象移动到同一存储桶中的不同文件夹?
四处搜索我能看到的是复制到新位置和删除原始位置的建议(通过 "CopyObjectRequest" 和 "DeleteObjectRequest" 很容易)但是我只是想知道这是不是唯一的方法?
原来可以使用Amazon.S3.IO.S3FileInfo获取对象然后调用"MoveTo"方法移动对象
S3FileInfo currentObject = new S3FileInfo(S3Client,Bucket,CurrentKey);
S3FileInfo movedObject = currentObject.MoveTo(Bucket,NewKey);
编辑:事实证明,上面的 "MoveTo" 方法只是在幕后执行复制和删除:)
如@user1527762 所述,S3FileInfo 在 AWSSDK.S3 库 (v 3.7.2.2) 的 .NET Core 版本中不可用。
如果您使用的是 .net 核心,则可以使用 CopyObject 将对象从一个存储桶移动到另一个存储桶。
var s3Client = new AmazonS3Client(RegionEndpoint.USEast1);
var copyRequest = new CopyObjectRequest
{
SourceBucket = "source-bucket",
SourceKey = "fileName",
DestinationBucket = "dest-bucket",
DestinationKey = "fileName.jpg",
CannedACL = S3CannedACL.PublicRead,
};
var copyResponse = await s3Client.CopyObjectAsync(copyRequest);
CopyObject 不会删除源对象,因此您必须像这样调用 delete:
DeleteObjectRequest request = new DeleteObjectRequest
{
BucketName = "source-bucket",
Key = "fileName.jpg"
};
await s3Client .DeleteObjectAsync(request);
此处有关 CopyObject 的详细信息:https://docs.aws.amazon.com/AmazonS3/latest/userguide/copy-object.html
并在此处删除对象:https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html
有什么方法可以使用 AWS SDK(最好是 .Net)将对象移动到同一存储桶中的不同文件夹?
四处搜索我能看到的是复制到新位置和删除原始位置的建议(通过 "CopyObjectRequest" 和 "DeleteObjectRequest" 很容易)但是我只是想知道这是不是唯一的方法?
原来可以使用Amazon.S3.IO.S3FileInfo获取对象然后调用"MoveTo"方法移动对象
S3FileInfo currentObject = new S3FileInfo(S3Client,Bucket,CurrentKey);
S3FileInfo movedObject = currentObject.MoveTo(Bucket,NewKey);
编辑:事实证明,上面的 "MoveTo" 方法只是在幕后执行复制和删除:)
如@user1527762 所述,S3FileInfo 在 AWSSDK.S3 库 (v 3.7.2.2) 的 .NET Core 版本中不可用。
如果您使用的是 .net 核心,则可以使用 CopyObject 将对象从一个存储桶移动到另一个存储桶。
var s3Client = new AmazonS3Client(RegionEndpoint.USEast1);
var copyRequest = new CopyObjectRequest
{
SourceBucket = "source-bucket",
SourceKey = "fileName",
DestinationBucket = "dest-bucket",
DestinationKey = "fileName.jpg",
CannedACL = S3CannedACL.PublicRead,
};
var copyResponse = await s3Client.CopyObjectAsync(copyRequest);
CopyObject 不会删除源对象,因此您必须像这样调用 delete:
DeleteObjectRequest request = new DeleteObjectRequest
{
BucketName = "source-bucket",
Key = "fileName.jpg"
};
await s3Client .DeleteObjectAsync(request);
此处有关 CopyObject 的详细信息:https://docs.aws.amazon.com/AmazonS3/latest/userguide/copy-object.html
并在此处删除对象:https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html