1

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

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

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

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

这不会返回我正在寻找的结果,它似乎没有返回任何东西。

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

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

4

2 回答 2

1

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

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

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();
        }
    }
}
于 2015-10-12T14:09:37.390 回答
0

如果您使用的是 Openstack.NET API,参考文档指出CloudFilesProvider有一个名为ListObjects.

文档说这种方法:

列出容器中的对象

该方法返回IEnumerable<ContainerObject>并且快速浏览参数列表在我看来就像您可以在第一个参数中只传递一个容器名称,null其余的——我将把它留给您来确定您的用例需求。

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

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

于 2015-10-10T06:01:01.457 回答