在php中的Azure存储中获取Blob目录名称

时间:2016-09-29 06:07:24

标签: php azure azure-storage azure-storage-blobs

我想从php创建azure存储中的目录和子目录并获取该目录。这是我的代码。

$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 />";
}

我想获取目录&#34; dir1&#34;。我检查了该示例How to create a sub container in azure storage location。 但它不是在PHP中。任何人都可以帮助我如何在PHP代码中创建和获取azure目录。

1 个答案:

答案 0 :(得分:0)

从容器中查询Blob时,可以使用ListBlobsOptions设置特殊对象。根据您的要求,您可以使用此选项的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 for PHP中使用这些模块的示例。您可以从https://github.com/Azure-Samples/storage-blob-php-webapplication/blob/master/PHP/api/trial.php#L163全面了解一下使用情况。

如有任何疑问,请随时告诉我。