SoftLayer对象存储API:搜索结果不正确

时间:2016-03-26 14:11:16

标签: php api ibm-cloud-infrastructure object-storage

我尝试使用api-client的softlayer对象存储。 softlayer-object-storage-php

我的目标是按文件名搜索,并查看文件是否存在。

singlebyte filename(例如a.jpg)正确的结果。 multibyte filename(日本语.jpg)不正确的结果。

我的容器是photo,没有子目录。

sjc01/photo/a.jpg  
sjc01/photo/日本語.jpg  
sjc01/photo/multibyte_filename.jpg  
sjc01/photo/anytime with space.jpg  
...  

代码

<?php
    include('/includes/lib/ObjectStorage/Util.php');
    $tokenStore = ObjectStorage_TokenStore::factory('file', array('ttl' => 3600, 'path' => '/tmp/objectStorage'));
    #give the write permission in /tmp/objectStorage
    ObjectStorage::setTokenStore($tokenStore);

    $host = 'https://sjc01.objectstorage.softlayer.net/auth/v1.0';
    $username='SLXXXXXXXXXXX';
    $password='XXXXXXXXXXXXX';
    $options = array('adapter' => ObjectStorage_Http_Client::SOCKET, 'timeout' => 10);

    $objectStorage = new ObjectStorage($host, $username, $password, $options);
    $containerList = $objectStorage->with('photo')
                            ->setContext('search')
                            ->setFilter('type', 'object')
                            ->setFilter('q.name', "multibytefilename.jpg")
                            ->setMime('json')
                            ->get();
    var_dump($containerList);

结果objectCount 100不正确。 我希望objectCount 1。

返回值的一部分结束。

["context":protected]=>  
string(6) "SEARCH" 
["containerCount":protected]=>  
int(0)  
["objectCount":protected]=>  
int(100)  

我需要身份存在。
有人有任何想法或正确的方法吗?
谢谢。

1 个答案:

答案 0 :(得分:0)

我认为你的查询是返回所有对象.jpg。试试这个:

$containerList = $objectStorage->with('test')
                            ->setContext('search')
                            ->setFilter('type', 'object')
                            ->setFilter('q.name', "a.jpg")
                            ->setMime('json')
                            ->get();
    var_dump($containerList);

如果我没有错,您需要指定要查找的属性(在本例中为名称)

此处提供了有关可在查询搜索中使用的字段的详细信息。 http://sldn.softlayer.com/article/API-Operations-Search-Services

我希望它可以帮到你。