Получить имя каталога BLOB-объектов в хранилище Azure в Stack Overflow

Я хочу создать каталог и подкаталог в хранилище Azure из 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». Я проверил этот пример Как создать субконтейнер в хранилище Azure.
Но это не в php. Может ли кто-нибудь помочь мне, как мы можем создать и получить каталог в Azure из кода PHP.

1

Решение

Ты можешь использовать ListBlobsOptions установить особый объект при запросе BLOB-объектов из контейнера. По вашему требованию вы можете использовать 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.

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

0

Другие решения

Других решений пока нет …