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)
ステータスが存在する必要があります。
誰にもアイデアや正しい方法がありますか?
ありがとうございました。