2013-06-23 32 views
2

我正在使用Java jclouds API访问我的Rackspace云文件帐户。在Rackspace云文件中获取对象的链接API

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

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

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

回答

1

我想通了......

首先,我应该得到的对象的容器的公共URI,而不是从对象。

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

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

从那里,你可以查询容器:与CDNContainer

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

现在你可以得到你需要的具体网址:

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。

相关问题