1

私は、Rackspace CloudFiles APIを使用しています。ここでは、コンテナ内にフォルダが存在するかどうかを確認する必要があります。PHP - Rackspace CloudFiles APIは、ファイルパスが既に存在するかどうかを確認します。

私は、コンテナが存在するかオブジェクトが存在するかを見つけるための解決策を見つけることができる、さまざまな分野にわたって検索しました。例えば

フォーマット:場所保存コンテナ/フォルダ/サブフォルダ/ファイル

実際のファイル:私は知りたい test/test_folder/test_subfolder/test.txt

は私のコンテナが既に持っていますさフォルダtest_folder

そして私は道を言う何かに出くわしましたが、この方法が存在するかどうかはわかりません!

getObjects ->> 'path', 'file path to search' 

答えて

1

は、私は正確なPHPのメソッドを投稿したいし、将来は他のある支援するスニペット。

$client = new Rackspace(Rackspace::US_IDENTITY_ENDPOINT, array(
    'username' => 'XXXXXXXX', 
    'apiKey' => 'XXXXXXXXXXXXXXXXXXX' 
)); 

$total    = 0; 
$containerObjects = array(); 
$objectStoreService = $client->objectStoreService(null, 'XX'); 
$container   = $objectStoreService->getContainer('test'); 
$objData = $container->ObjectList(array('prefix'=>"test_folder/", 'delimiter'=>"/")); 
if(is_object($objData)) 
{ 
    $total = $objData->count(); 
    if ($total == 0) 
     break; 

    foreach ($objData as $object) { 
     $containerObjects[] = $object->getName(); 
    } 
} 

var_dump($containerObjects); 

出力

array (size=1) 
    0 => string 'test/test_folder/test_subfolder/' (length=32) 

は、これが役立つことを願っています。

1

私は本当にPHPやがつがつ食うのコンテキストでこの質問に答えることはできませんが、私は、クラウドファイルと役立つかもしれないいくつかのコマンドラインカール例のいくつかの情報を提供することができます。

Rackspace Cloud Filesには実際にコンテナ内に「フォルダ」という概念がありません。 https:// {storage_endpoint}/{account_name}/{container_name}/{object_name}

名前に「/」文字を含むオブジェクトを作成してフォルダをエミュレートすることができます。次に、コンテナのリストを実行するときに、 "プレフィックス"と "区切り文字"クエリ文字列パラメータを設定して、フォルダのような動作をエミュレートすることができます。たとえば、あなたがすべてのあなたのオブジェクトを参照するには、あなたのコンテナのリストを行う

を言う:

$ curl -i -XGET -H"x-auth-token: $AUTH_TOKEN" https://storage101.iad3.clouddrive.com/v1/$ACCOUNT_NAME/$CONTAINER_NAME      
HTTP/1.1 200 OK 
... 
Date: Thu, 01 Dec 2016 02:16:53 GMT 

foo/file1.txt 
foo/bar/file2.txt 
baz/file3.txt 
baz/file4.txt 

ここでは「FOO/FILE1.TXT」と名付けられた4つのオブジェクト、「FOO /バー/ FILE2.TXTを持っています"、" baz/file3.txt "、" baz/file4.txt "のいずれかです。

次のようにフォルダ「foo」というの存在をテストする最も簡単な方法は、「FOO /」に接頭辞とする「/」区切り文字を設定することです:

$ curl -i -XGET -H"x-auth-token: $AUTH_TOKEN" https://storage101.iad3.clouddrive.com/v1/$ACCOUNT_NAME/$CONTAINER_NAME?prefix=foo/&delimiter=/ 
HTTP/1.1 200 OK 
... 
Date: Thu, 01 Dec 2016 02:16:45 GMT 

foo/file1.txt 
foo/bar/file2.txt 

をあなたが見ることができるようにその接頭辞を持つオブジェクトが存在する場合は、その接頭辞に一致したオブジェクトのリストとともにHTTP 200が戻されます。その接頭辞を持つオブジェクトが存在しない場合、「フォルダー」は存在せず、HTTP 204が戻されます。

"foo"の中で "サブフォルダ"をテストする場合は、プレフィックスを "foo/bar /"に変更し、区切り文字を "/"にして別のコンテナのリストを実行することができます。

さらに、「images.jpg」という名前のオブジェクトを作成するだけでフォルダを作成して「cat.jpg」が含まれるようにするには、まずフォルダを作成する必要はありません。 cat.jpgのデータが含まれています。

あなたはここにRackspaceのクラウドファイルと擬似階層フォルダの詳細情報を見つけることができます:@hurricanerix答えは私を助けていても​​

+0

ありがとう、それは私の多くを助けた.. –

関連する問題