2016-09-29 5 views
0

Я хочу создать каталог и подкаталог в azure storage из php и получить этот каталог. Это мой код.Получить имя каталога BLOB в azure storage в php

$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connection_string); 


$content = fopen("abc.txt", "r"); 
$blob_name = "dir1/dir2/di3/myblob"; 

try { 
    //Upload blob 
    $blobRestProxy->createBlockBlob("mycontainer", $blob_name, $content); 
} 
catch(ServiceException $e){ 
    // Handle exception based on error codes and messages. 
    // Error codes and messages are here: 
    // http://msdn.microsoft.com/library/azure/dd179439.aspx 
    $code = $e->getCode(); 
    $error_message = $e->getMessage(); 
    echo $code.": ".$error_message."<br />"; 
} 

Я хочу, чтобы получить каталог "dir1" .Я проверил этот пример How to create a sub container in azure storage location. Но это не в php. Может ли кто-нибудь помочь мне, как мы можем создать и получить каталог в лазурном виде из PHP-кода.

+0

Не могли бы вы объяснить, что вы подразумеваете под «как мы можем создать и получить каталог в лазури из PHP-кода»? –

+0

Значит, я хочу создать каталог и в этом много подкаталоге. Как вы видите в данной ссылке «content/blue/images/logo.jpg, content/blue/images/icon-start.jpg, content/red/images/icon-stop.jpg» и получить эти капли с каталогом имя. В качестве примера показано в ссылке «Каталог CloudBlobDirectory = cloudBlobClient.GetBlobDirectoryReference (имя_каталога);» Но это не в php – ankit

+0

. Одно дело, что хранилище blob не поддерживает вспомогательные каталоги. Таким образом, вы не можете создать вспомогательный каталог внутри контейнера. Вы по существу создаете иллюзию подкаталога, префикс своего имени blob. В приведенном выше примере «content/red/images» является префиксом blob, а имя blob - «content/red/images/icon-stop.jpg». Это оставляет поиск капли в каталоге. Что вы можете сделать, это выполнить поиск по префиксу, где вы указываете имя префикса и службы хранения, возвращает все капли, которые начинаются с этого префикса. –

ответ

0

Вы можете использовать ListBlobsOptions для установки особого объекта при запросе Blobs из контейнера. По вашему требованию вы можете использовать setDelimiter('/') этих параметров, чтобы установить разделитель, чтобы отделить виртуальный каталог от имен blob.

И использовать getBlobPrefixes(), чтобы получить имена виртуальных каталогов от ListBlobsResult, что является результатом функции listBlobs().

Пожалуйста, обратите внимание на следующий фрагмент кода:

use MicrosoftAzure\Storage\Blob\Models\ListBlobsOptions; 
$listBlobsOptions = new ListBlobsOptions(); 
$listBlobsOptions->setDelimiter('/'); 
$result = $blobClient->listBlobs(<container_name>, $listBlobsOptions); 
foreach ($result->getBlobPrefixes() as $k => $b) { 
    //an instance of MicrosoftAzure\Storage\Blob\Models\BlobPrefix 
    array_push($return['blobPrefixes'], $b->getName()); 
} 

А вот пример о том, как использовать модули в Azure Staoge SDK для PHP. Вы можете получить полный обзор использования от https://github.com/Azure-Samples/storage-blob-php-webapplication/blob/master/PHP/api/trial.php#L163.

Любая дополнительная забота, пожалуйста, сообщите мне.