【发布时间】:2013-07-05 18:56:13
【问题描述】:
简单的问题;如何使用文件名在 Azure blob 存储中使用 PHP 检查 blob 是否存在?我似乎在 API 中找不到它。
干杯
【问题讨论】:
简单的问题;如何使用文件名在 Azure blob 存储中使用 PHP 检查 blob 是否存在?我似乎在 API 中找不到它。
干杯
【问题讨论】:
我今天正在寻找这个,这是最热门的搜索结果,所以想在这里给出我的解决方案,它使用前缀选项来仅查找与我正在寻找的名称匹配的 blob。
您还需要包含use MicrosoftAzure\Storage\Blob\Models\ListBlobsOptions;。
function blobExists($name)
{
global $blobClient, $blobContainer;
$listBlobsOptions = new ListBlobsOptions();
$listBlobsOptions->setPrefix($name);
$result = $blobClient->listBlobs($blobContainer, $listBlobsOptions);
return count($result->getBlobs());
}
【讨论】:
SMITHRA 的匹配回报吗?
SMITHRA 传递给函数,即blobExists('SMITHRA')吗?
$listBlobsOptions->setPrefix($name . '.jpg'); - 它工作的唯一方法是事后添加图片扩展,但效果很好,谢谢!如果我没有扩展,我将获得 SMITHRA 的所有回报,如 SMITHRAC、SMITHRAZ 等。因为listBolbs 返回所有 blob,而不仅仅是一个。
使用适用于 Azure 的 PHP SDK。
/ Create blob REST proxy.
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);
// Get blob.
$blob = $blobRestProxy->getBlob("mycontainer", "myblob");
if ($blob) {
//blob exists
}
【讨论】:
try {} catch (Exception)
使用 PHP SDK v4.10 的解决方案
$storageClient = $this->azure->get_blob_storage();
//check if blob exists
$exists = $storageClient->blobExists(<container name>, <blob name>);
进入 SDK 文件夹中的 blob.php 以查看 API 函数的完整列表。
【讨论】: