使用 .net SDK 从 Amazon S3 存储桶下载文件夹

2024-02-23

如何使用 .net sdk 下载 s3 存储桶中存在的整个文件夹。尝试使用以下代码,它会抛出无效密钥。我需要下载存储桶中存在的嵌套 pesudo 文件夹中存在的所有文件,并将文件下载限制删除为默认值 1000。

public static void DownloadFile()
{
var client = new AmazonS3Client(keyId, keySecret, bucketRegion);
        ListObjectsV2Request request = new ListObjectsV2Request
        {
            BucketName = bucketName + "/private/TargetFolder",         
            MaxKeys = 1000
        };
        try
        {
            ListObjectsV2Response bucketResponse = client.ListObjectsV2(request);
            foreach (S3Object o in bucketResponse.S3Objects)
            {
                var getRequest = new GetObjectRequest
                {
                    BucketName = bucketResponse.Name + "/private/TargetFolder",
                    Key = bucketResponse.Name +"/private/TargetFolder/"+ o.Key
                };
                var response = client.GetObject(getRequest);
                response.WriteResponseStreamToFile(downloadLocation + "\\" + o.Key);
                var responseCode = response.HttpStatusCode;
                if (response.HttpStatusCode == System.Net.HttpStatusCode.OK)
                {
                    Console.WriteLine($"Success downloaded : {o.Key}");
                }
                else if (response.HttpStatusCode == System.Net.HttpStatusCode.RequestTimeout)
                {
                    Console.WriteLine("Request Timeout error.");
                }
                else if (response.HttpStatusCode == System.Net.HttpStatusCode.ServiceUnavailable)
                {
                    Console.WriteLine("Service Unavailable.");
                }
                else if (response.HttpStatusCode == System.Net.HttpStatusCode.InternalServerError)
                {
                    Console.WriteLine("Internal Server error.");
                }
                else
                {
                    Console.WriteLine("Please check the provided AWS Credentials.");
                }
            }
        }
        catch (AmazonS3Exception amazonS3Exception)
        {
            if (amazonS3Exception.ErrorCode != null &&
                (amazonS3Exception.ErrorCode.Equals("InvalidAccessKeyId") || amazonS3Exception.ErrorCode.Equals("InvalidSecurity")))
            {
                Console.WriteLine("Please check the provided AWS Credentials.");
            }
            else
            {
                Console.WriteLine(amazonS3Exception.Message);
            }

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
        Console.ReadLine();
    }

提前致谢!


如果你总是得到 0S3Objects.Count,尝试不使用分隔符财产:

public async Task DownloadDirectoryAsync()
{
    var bucketRegion = RegionEndpoint.USEast2;
    var credentials = new BasicAWSCredentials(accessKey, secretKey);
    var client = new AmazonS3Client(credentials, bucketRegion);

    var bucketName = "bucketName";
    var request = new ListObjectsV2Request
    {
        BucketName = bucketName,
        Prefix = "directorey/",
        MaxKeys = 1000
    };

    var response = await client.ListObjectsV2Async(request);
    var utility = new TransferUtility(s3Client);
    var downloadPath = "c:\\your_folder";
    foreach (var obj in response.S3Objects)
    {
        utility.Download($"{downloadPath}\\{obj.Key}", bucketName, obj.Key);
    }
} 

当然,你需要s3:列表桶允许

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 .net SDK 从 Amazon S3 存储桶下载文件夹 的相关文章

随机推荐

  • didSelectItemAtIndexPath 在集合视图 Swift 中不起作用

    我一直在开发一个新的应用程序 它在集合视图中显示 Gif 我还为集合视图中的单元格使用自定义集合视图单元格类 方法didSelectItemAtIndexPath虽然不起作用 func collectionView collectionVi
  • 如何保护在 playframework 中开发的 REST api 的安全

    我在这里和其他文章上读到了很多关于这方面的内容 首先让我解释一下我的情况 假设我有以下 REST 后端 GET user以 JSON 格式返回所有用户 无需登录 POST user注册新用户 无需登录 DELETE user删除一个用户 你
  • Firebase 设置数据结构

    您好 我想知道在使用 Firebase 控制台时是否有办法强制使用数据库结构 例如 我需要添加一个名称为 Sample 且值 3的对象 然后当我想添加另一个对象时 我只能插入具有相同结构 名称和值 的对象 有什么办法可以实现这一点吗 使用
  • 合并两个 HTML 表格单元格

    我正在 HTML 中创建一个表格 我希望顶部单元格的宽度为 2 这是一个粗略的图 HEADER CONTENT CONTENT
  • Paypal 支付页面布局在 webview android 中损坏,也许 css 未正确加载?

    正如卡德维尔在他的问题中提到的 Paypal 支付页面布局在 webview android 中损坏 https stackoverflow com questions 23405919 paypal payment page layout
  • InitMUILanguage() 与 MessageBox()

    我有 MUI C 应用程序使用InitMUILanguage https msdn microsoft com en us library windows desktop bb775699 v vs 85 aspx and SetProce
  • 如何让AltBeacon库的BootstrapRegion识别iBeacon布局?

    我正在使用参考 http altbeacon github io android beacon library samples html http altbeacon github io android beacon library sam
  • 静态方法中的局部变量和线程安全

    我有一个关于变量范围的问题 例如 class A private static void test do something with local variables 现在我创建两个线程 并创建一个实例A对于每个线程 当我打电话时test
  • Win32 更改为二进制模式子级的标准输出(管道)

    你好 这个伟大的社区 我在自动转换时遇到问题 n 0x0A to n r 0x0D 0x0A当使用管道将子级的标准输出重定向到文件时 子级的输出是字节并且not text 首先 我使用了这些例子MSDN 创建具有重定向输入和输出的子进程 h
  • 向巧克力之神发出嘘声

    Update 该实用程序用于帮助配置Git通过我正在观看的经过认证的 Microsoft Visual Academy MVA 视频 当我通过 Chocolatey 安装软件包时收到一个奇怪的错误 我已上传命令提示符 指向 Chocolat
  • spamassassin 检查分数 C# 代码

    有没有办法检查 ASP Net 应用程序中的分数 Net 的类或类似的东西 其他垃圾邮件过滤器怎么样 编辑 我正在寻找一种方法来检查 C 中电子邮件的垃圾邮件分数 这是我超级简化的 只需检查分数 代码 用于连接到我为 C 编写的正在运行的垃
  • 使用 Yammer 嵌入和开放图设置默认目标组

    我正在使用Yammer 嵌入 https developer yammer com connect 外部 Web 应用程序中的 JavaScript 控件 我想使用开放图功能 以便将所做的评论链接回创建它们的页面 这一切都非常简单 但我的问
  • 如果安装了 .Net 4.5,如何保持 .Net 4.0 行为?

    我们有一个面向 Net Framework 4 0 的 Windows 窗体应用程序 安装 Net Framework 4 5 后 应用程序开始崩溃 我们必须调查崩溃事件 并且很可能必须修复我们这边的问题 但是 在我们准备好使用 Net 4
  • 如何栅格化球体

    所以 我试图创建一个外部有 块 的球体 有点像在 Minecraft 中构建的 我不知道圆的外部的术语是什么 问题是 我不知道如何让像中点圆算法这样的方程适用于球体 最好是在 lua 或 java 中 这样我可以更轻松地阅读任何答案 我不想
  • @with_kw 在 Julia 中做什么?

    我正在阅读一些代码 如下所示 with kw struct HyperParams batch size Int 128 latent dim Int 100 epochs Int 25 verbose freq Int 1000 outp
  • TypeError:在 Xubuntu 14.04.5 上尝试 Selenium 时,urlopen() 获得了关键字参数“body”的多个值

    环境 lsb release a No LSB modules are available Distributor ID Ubuntu Description Ubuntu 14 04 5 LTS Release 14 04 Codenam
  • java中可以将字符串转换为数学运算吗?

    我可以将像 3 3 3 这样的字符串转换为java中的数学运算吗 使用 JavaScript 来评估它脚本引擎 http docs oracle com javase 6 docs api javax script ScriptEngine
  • AWS Lex Python Codehook 参考

    我对 Python 和编码 还很陌生 但我正在尝试使用 Lambda 函数构建自己的 Lex 机器人 我一直在关注教程 我可以理解它是如何工作的 问题是 当我尝试为 Lex 编写自己的 Lambda 函数时 我找不到任何参考来帮助我编写代码
  • 将带逗号的字符串转换为数组

    如何将字符串转换为 JavaScript 数组 看代码 var string 0 1 var array string alert array 0 在这种情况下alert shows 0 1 如果它是一个数组 它会显示0 而如果alert
  • 使用 .net SDK 从 Amazon S3 存储桶下载文件夹

    如何使用 net sdk 下载 s3 存储桶中存在的整个文件夹 尝试使用以下代码 它会抛出无效密钥 我需要下载存储桶中存在的嵌套 pesudo 文件夹中存在的所有文件 并将文件下载限制删除为默认值 1000 public static vo