Rackspace 云文件获取容器 C# 中的对象

Rackspace Cloud Files Get Objects In Container C#

我一直在查看文档、测试示例并熟悉 Rackspace 云文件 API。我记下了基本代码,得到了 API 密钥,得到了用户名,基本的东西。现在有一件事让我感到困惑,这个问题似乎没有得到很好的记录。

所以我要做的是获取容器中的所有对象,包括文件夹和文件。我试过这个例子:

IEnumerable<ContainerObject> containerObjects = cloudFilesProvider.ListObjects("storage",null,null,null,null,null,false,ci);

foreach(ContainerObject containerObject in containerObjects)
{
    MessageBox.Show(containerObject.ToString());
}

这不是 return 我要找的结果,似乎 return 什么都不是。

我在 NuGet 控制台中使用 运行 提供的 OpenStack: Install-Package Rackspace.

我正在尝试为我和我的家人创建一个文件备份程序。

如果您使用 Openstack.NET API,参考文档表明 CloudFilesProvider 有一个名为 ListObjects.

的方法

文档说这个方法:

Lists the objects in a container

方法 returns IEnumerable<ContainerObject> 快速浏览一下参数列表在我看来就像您可以在第一个参数中传递一个容器名称,其余参数传递 null - - 我会留给您来确定您的用例需求。

以下文档页面详细描述了该方法并包含一个完整的 C# 示例。

http://www.openstacknetsdk.org/docs/html/M_net_openstack_Providers_Rackspace_CloudFilesProvider_ListObjects.htm

一个常见的问题是没有指定区域。当您的 Rackspace 云帐户的默认区域与容器所在的区域不同时,您必须指定区域,否则您将看不到列出的任何结果。这是相当误导...

这是一个示例控制台应用程序,它打印特定区域中所有容器(及其对象)的内容。将 "DFW" 更改为容器所在区域的名称。如果您不确定哪个区域有您的容器,请登录 Rackspace 云控制面板并转到 "Storage > Files" 并注意右上角的区域下拉列表。

using System;
using net.openstack.Core.Domain;
using net.openstack.Providers.Rackspace;

namespace ListCloudFiles
{
    class Program
    {
        static void Main()
        {
            var region = "DFW";
            var identity = new CloudIdentity
            {
                Username = "username",
                APIKey = "apikey"
            };

            var cloudFilesProvider = new CloudFilesProvider(identity);

            foreach (Container container in cloudFilesProvider.ListContainers(region: region))
            {
                Console.WriteLine(container.Name);

                foreach (ContainerObject obj in cloudFilesProvider.ListObjects(container.Name, region: region))
                {
                    Console.WriteLine(" * " + obj.Name);
                }
            }
            Console.ReadLine();
        }
    }
}