Openstack Rackspace CloudFile API-获取对象信息

Openstack Rackspace CloudFile API-获取对象信息,openstack,rackspace-cloud,rackspace,openstack-swift,rackspace-cloudfiles,Openstack,Rackspace Cloud,Rackspace,Openstack Swift,Rackspace Cloudfiles,下面是我对API所做的: Auth(从“对象存储”获取我需要的特定区域的令牌和publicUrl) 使用端点中的publicUrl(如所示)获取文件列表: 获取[publicUrl]/[container] 这将返回一个数组,其中每个项(对象)如下所示: ( [哈希]=>7213ee9a7d9dc119d2921a40e899ec5e [最后修改]=>2015-12-29T02:46:08.400490 [字节]=>1 [name]=>某种类型的文件名.jpg [内容类型]=>应用程序/后记 )

下面是我对API所做的:

  • Auth(从“对象存储”获取我需要的特定区域的令牌和publicUrl)

  • 使用端点中的publicUrl(如所示)获取文件列表: 获取[publicUrl]/[container] 这将返回一个数组,其中每个项(对象)如下所示:

    ( [哈希]=>7213ee9a7d9dc119d2921a40e899ec5e [最后修改]=>2015-12-29T02:46:08.400490 [字节]=>1 [name]=>某种类型的文件名.jpg [内容类型]=>应用程序/后记 )

  • 现在,如何构建url以获取项目(对象)?我尝试了以下方法:

    [publicUrl]/[container]/[hash] [publicUrl]/[container]/urlencoded([name])

    在其他没有意义的事情中,但我还是尝试了

    如有任何想法/帮助,将不胜感激

    如果您正在使用,您可以自己跳过构建URL

    这是您的文档。对象URL是容器的公共URL(位于X-Cdn-Uri响应头中)与附加的对象名称的组合

    例如,对于名为“foo”的容器,向API发送经过身份验证的HEAD请求:

    HEAD {cloudFilesEndpoint}/foo
    
    在响应中,容器的公共URL位于“X-Cdn-Uri”标题中:

    HTTP/1.1 204 No Content
    X-Cdn-Ssl-Uri: https://83c49b9a2f7ad18250b3-346eb45fd42c58ca13011d659bfc1ac1.ssl.cf0.rackcdn.com
    X-Ttl: 259200
    X-Cdn-Uri: http://081e40d3ee1cec5f77bf-346eb45fd42c58ca13011d659bfc1ac1.r49.cf0.rackcdn.com
    X-Cdn-Enabled: True
    X-Log-Retention: False
    X-Cdn-Streaming-Uri: http://084cc2790632ccee0a12-346eb45fd42c58ca13011d659bfc1ac1.r49.stream.cf0.rackcdn.com
    X-Trans-Id: tx82a6752e00424edb9c46fa2573132e2c
    Content-Length: 0
    
    现在,对于名为“styles/site.css”的对象,将该名称附加到公共URL,从而生成以下URL:

    http://081e40d3ee1cec5f77bf-346eb45fd42c58ca13011d659bfc1ac1.r49.cf0.rackcdn.com/styles/site.css
    

    你用什么语言?您是使用SDK还是直接使用API?谢谢您的回复。对于未启用CDN的容器也是这样吗?如果希望对象可以公开访问,则容器必须启用CDN。因此,我正在使用apikey进行身份验证,并在后续请求中发送令牌。是的,如果您没有通过启用CDN来公开容器,那么您必须进行身份验证并使用令牌来检索对象。我的回答对你有用吗?还是你仍然有问题?结果是,我的HEAD请求中没有返回url。我最终发现我从一开始就做对了,但我没有正确地对文件名进行url编码(它将空格编码为“+”符号,而不是“%20”)。我感谢您的回复,因为它帮助我不断排除故障并找到答案!