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

Posted

技术标签:

【中文标题】在 Rackspace 云文件 API 中获取对象的链接【英文标题】:Getting an object's links in Rackspace cloud files API 【发布时间】:2013-06-20 07:58:22 【问题描述】:

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

我可以创建和列出容器以及上传对象,但我不知道如何获取已上传对象的公共链接。 (我可以在 Rackspace 控制面板中看到这些公共链接,通过右键单击对象 - 有 4 种类型:HTTP、HTTPS、流式传输、ios 流式传输)。

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

有人知道我做错了什么吗?

【问题讨论】:

【参考方案1】:

我想通了……

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

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

【讨论】:

【参考方案2】:

这里有更多信息和一些获取特定文件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,然后转换为字符串,它可能看起来像:

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

从这里我可以得到一个名为 example.mp4 的文件,地址如下:

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

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

【讨论】:

以上是关于在 Rackspace 云文件 API 中获取对象的链接的主要内容,如果未能解决你的问题,请参考以下文章

播放 Rackspace 云文件中的视频时 Chrome 冻结

Linux内存管理和大文件

使用 Jclouds 上传时,Rackspace 云文件将“应用程序/未知”作为 mime 类型返回

云计算公司Rackspace冲刺美股:估值或达100亿美元

Rackspace 云站点上的 PHP(Zend 框架)代码分析

云计算 | COVID-19带来机遇 云计算巨头Rackspace再提IPO