Nav*_*lal 4 amazon-s3 amazon-web-services aws-sdk
有没有办法使用AWS SDK将对象移动到同一个存储桶中的不同文件夹(最好是.Net)?
搜索所有我能看到的是复制到新位置和删除原始的建议(这很容易通过"CopyObjectRequest"和"DeleteObjectRequest")但是我只是想知道这是唯一的方法吗?
事实证明,您可以使用Amazon.S3.IO.S3FileInfo来获取对象,然后调用"MoveTo"方法来移动对象.
S3FileInfo currentObject = new S3FileInfo(S3Client,Bucket,CurrentKey);
S3FileInfo movedObject = currentObject.MoveTo(Bucket,NewKey);
Run Code Online (Sandbox Code Playgroud)
编辑:事实证明上面的"MoveTo"方法只是在幕后执行复制和删除:)
有关详细信息,请访问:https:
//docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page = S3/TS3IOS3FileInfo.html&tocid = Amazon_S3_IO_S3FileInfo
正如 @user1527762 提到的,S3FileInfo 在 .NET Core 版本的 AWSSDK.S3 库 (v 3.7.2.2) 中不可用。
如果您使用 .net core,则可以使用 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);
Run Code Online (Sandbox Code Playgroud)
CopyObject 不会删除源对象,因此您必须像这样调用删除:
DeleteObjectRequest request = new DeleteObjectRequest
{
BucketName = "source-bucket",
Key = "fileName.jpg"
};
await s3Client .DeleteObjectAsync(request);
Run Code Online (Sandbox Code Playgroud)
有关 CopyObject 的详细信息,请参见:https://docs.aws.amazon.com/AmazonS3/latest/userguide/copy-object.html
此处删除对象:https ://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-objects.html
| 归档时间: |
|
| 查看次数: |
8627 次 |
| 最近记录: |