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

时间:2015-10-10 05:06:41

标签: c# .net api rackspace cloudfiles

我一直在查看文档,测试示例并熟悉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

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

2 个答案:

答案 0 :(得分:1)

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

这是一个示例控制台应用程序,它打印特定区域中所有容器(及其对象)的内容。改变&#34; DFW&#34;到容器所在区域的名称。如果您不确定哪个区域有容器,请登录Rackspace云控制面板,然后转到&#34;存储&gt;文件&#34;并注意该区域在右上角下降。

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();
        }
    }
}

答案 1 :(得分:0)

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

文档说这个方法:

  

列出容器中的对象

该方法返回IEnumerable<ContainerObject>,快速浏览参数列表对我来说就像你可以在第一个参数中传递一个容器名称而在其余部分传递null - 我会留下它你可以找出你的用例需求。

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

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