0

api-clientでsoftlayerオブジェクトストレージを使ってみました。 softlayer-オブジェクト-ストレージ-php

私の目標は、ファイル名で検索し、ファイルが存在するかどうかを確認することです。

シングルバイトのファイル名 (例: a.jpg) は正しい結果です。マルチバイトのファイル名 (日本語.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)  

ステータスが存在する必要があります。
誰にもアイデアや正しい方法がありますか?
ありがとうございました。

4

1 に答える 1

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

お役に立てば幸いです。

于 2016-03-28T16:11:01.553 に答える