我尝试使用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)
我需要身份存在。
有人有任何想法或正确的方法吗?
谢谢。
答案 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
我希望它可以帮到你。