Получение URL-адреса блоба, только что загруженного в хранилище Azure с помощью переполнения стека

У меня нет проблем с загрузкой BLOB-объекта в Azure через PHP, например:

 $blobRestProxy->createBlockBlob("saskcontainer", $blob_name, $content);

но я не могу получить URL недавно созданного большого двоичного объекта. API довольно прост для получения URL

 echo $blob->getUrl()

Когда я перечисляю содержимое контейнера, он может получить URL каждого файла без проблем, как это:

$blob_list = $blobRestProxy->listBlobs("saskcontainer");
$blobs = $blob_list->getBlobs();

foreach($blobs as $blob)
{
echo $blob->getUrl()."<br />";
}

Отлично, но я просто хочу один URL (из загруженного), но код ниже не работает:

$blob = $blobRestProxy->getBlob("saskcontainer", $blob_name);
echo $blob->getUrl();

Я получаю сообщение об ошибке: вызов неопределенного метода WindowsAzure \ Blob \ Models \ GetBlobResult :: getUrl ()

Я попробовал это также:

$blob = $blobRestProxy->getUrl("saskcontainer", $blob_name);
echo $blob;

ошибка: вызов неопределенного метода WindowsAzure \ Blob \ BlobRestProxy :: getUrl ()
библиотеки:

 require_once 'WindowsAzure\WindowsAzure.php';
use WindowsAzure\Common\ServicesBuilder;
use WindowsAzure\Common\ServiceException;

Мысли?

2

Решение

URL для BLOB-объекта следует следующему шаблону:

[http|https]://[account-name].[endpoint-suffix(usually blob.core.windows.net]/[container-name]/[blob-name]

Используя этот шаблон, вы можете создать URL-адрес большого двоичного объекта, не получая его программно.

Я посмотрел Azure SDK для PHP и не смог найти простой способ программно получить URL-адрес BLOB-объекта (но я могу ошибаться). Сложным способом получения URL-адреса программным способом является вызов listBlobs метод и передать имя BLOB-объекта как prefix в options параметр для этой операции. В результате вы получите только один BLOB-объект, а затем вы можете сделать следующее, чтобы получить URL-адрес BLOB-объекта:

    $listBlobsOptions = new ListBlobsOptions();
$listBlobsOptions->setPrefix($blobName);
$blob_list = $blobRestProxy->listBlobs($containerName, $listBlobsOptions);
$blobs = $blob_list->getBlobs();

foreach($blobs as $blob)
{
echo $blob->getUrl()."<br />";
}
0

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

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

По вопросам рекламы [email protected]