在Rackspace云文件API中获取对象的链接

时间:2013-06-23 20:09:39

标签: rackspace-cloud rackspace cloudfiles jclouds

我正在使用Java jclouds API访问我的Rackspace云文件帐户。

我可以创建和列出容器,并上传对象,但我无法弄清楚如何获取上传对象的公共链接。 (我可以在Rackspace控制面板中看到这些公共链接,通过右键单击对象 - 有4种类型:HTTP,HTTPS,Streaming,iOS Streaming)。

我能得到的最接近的是使用object.getInfo()来获取对象的元数据。这包括一个URI,但这与我在控制面板中找到的公共链接不同。

任何人都知道我做错了什么?

2 个答案:

答案 0 :(得分:1)

我明白了......

首先,我应该获取对象容器的公共URI,而不是来自对象。

然后我使用 CloudFilesClient 对象。在容器上我需要使用getCDNMetadata("containername").getCDNUri()

答案 1 :(得分:0)

以下是获取特定文件CDN地址的更多信息和一些示例代码。 有关更多详细信息,请查看Java指南: https://developer.rackspace.com/docs/cloud-files/quickstart/?lang=java

首先获取云文件api:

    CloudFilesApi cloudFilesApi = ContextBuilder.newBuilder("rackspace-cloudfiles-us")
        .credentials("{username}", "{apiKey}")
        .buildApi(CloudFilesApi.class);

从那里你可以查询容器:

    CDNApi cdnApi = cloudFilesApi.getCDNApi("{region}");
    CDNContainer cdnContainer = cdnApi.get("{containerName}");

现在有了CDNContainer,您可以获得所需的特定网址:

    URI httpURI = cdnContainer.getUri();
    URI httpsURI = cdnContainer.getSslUri();

这将为您提供容器的基本URI。现在要获取特定文件的最终地址,您需要将 / {“your_file_name.extension”} 附加到地址的末尾。例如,如果我的基本URI被转换为URL然后转换为String,它可能看起来像:

    http://123456asdf-qwert987653.rackcdn.com/

从这里我可以获得一个名为 example.mp4 的文件,其中包含以下地址:

    http://123456asdf-qwert987653.rackcdn.com/example.mp4

这一切都假设您已经在容器上启用了CDN。