如何在 .Net Core 中的 AWS S3 中将对象从一个存储桶复制/移动到另一个存储桶

时间:2021-01-08 07:43:45

标签: c# .net amazon-web-services asp.net-core amazon-s3

最近我将我的代码从 .NetFramework 迁移到了 .NetCore 3.1。 在执行此操作时,我陷入了处理 MoveFolder 功能的地方。

之前的代码如下所示。

    public void MoveS3Folder(string sourceBucket, string targetBucket, string sourceFolder, string targetFolder)
    {
        sourceFolder = sourceFolder.Replace('/', '\\');
        targetFolder = targetFolder.Replace('/', '\\');
        using (var client = AwsObjectCreator.GetAmzonS3())
        {
            var source = new S3DirectoryInfo(client, sourceBucket, sourceFolder);
            S3DirectoryInfo target = new S3DirectoryInfo(client, targetBucket, targetFolder);

            if (!target.Exists)
            {
                target.Create();
            }

            try
            {
                source.MoveTo(target);
            }
            catch (System.IO.IOException e)
            {
                if (e.Message.Equals("File already exists", StringComparison.OrdinalIgnoreCase))
                {
                    target = new S3DirectoryInfo(client, targetBucket, targetFolder + "\\" + DateTime.Now.ToString("MM-dd-yyyy hh-mm-ss"));
                    target.Create();
                    source.MoveTo(target);
                }
            }

        }
    }

因为之前我们使用了 AWSSDK.S3 Sdk 包,其中包含 S3DirectoryInfo 类,在此帮助下我们实现了目标。

现在,我正在寻找与 AWSSDKCore.S3 类似的解决方案。

到目前为止我尝试过的事情:

  1. https://www.derpturkey.com/copy-a-folder-in-amazons3-using-the-c-api/
  2. https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectUsingNetSDK.html

我理解从上述文章中复制数据的概念,但我并没有这样做。

我收到的错误 - “指定的密钥不存在”

如果有人可以提供帮助,那将是可观的!

0 个答案:

没有答案
相关问题