检查 Azure Blob 存储中是不是存在 blob (php)
Posted
技术标签:
【中文标题】检查 Azure Blob 存储中是不是存在 blob (php)【英文标题】:Checking if a blob exists in Azure Blob storage (php)检查 Azure Blob 存储中是否存在 blob (php) 【发布时间】:2013-07-05 18:56:13 【问题描述】:简单的问题;如何使用文件名在 Azure blob 存储中使用 php 检查 blob 是否存在?我似乎在 API 中找不到它。
干杯
【问题讨论】:
【参考方案1】:我今天正在寻找这个,这是最热门的搜索结果,所以想在这里给出我的解决方案,它使用前缀选项来仅查找与我正在寻找的名称匹配的 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());
【讨论】:
有没有办法可以针对特定的 blob?除了获得所有“SMITH”回报之外,我可以只获得SMITHRA
的匹配回报吗?
除非我误解了你的问题,你不能只将SMITHRA
传递给函数,即blobExists('SMITHRA')
吗?
我用这个方法让它工作了,$listBlobsOptions->setPrefix($name . '.jpg');
- 它工作的唯一方法是事后添加图片扩展,但效果很好,谢谢!如果我没有扩展,我将获得 SMITHRA 的所有回报,如 SMITHRAC、SMITHRAZ 等。因为listBolbs
返回所有 blob,而不仅仅是一个。
啊,你没有提到你想寻找一个特定的文件扩展名!很高兴它对你有用。【参考方案2】:
使用适用于 Azure 的 PHP SDK。
/ Create blob REST proxy.
$blobRestProxy = ServicesBuilder::getInstance()->createBlobService($connectionString);
// Get blob.
$blob = $blobRestProxy->getBlob("mycontainer", "myblob");
if ($blob)
//blob exists
【讨论】:
谢谢,我认为这适用于新的 SDK,但如果您使用的是 v4,我会看到我的答案,以另一种方式做到这一点。 这不起作用。如果 blob 不存在,则会抛出错误“BlobNotFound” 不能抛出错误,只能抛出异常。因此,请随时将任何更新的 SDK 功能编辑为try catch (Exception)
【参考方案3】:
使用 PHP SDK v4.10 的解决方案
http://phpazure.codeplex.com/
$storageClient = $this->azure->get_blob_storage();
//check if blob exists
$exists = $storageClient->blobExists(<container name>, <blob name>);
进入 SDK 文件夹中的 blob.php 以查看 API 函数的完整列表。
【讨论】:
以上是关于检查 Azure Blob 存储中是不是存在 blob (php)的主要内容,如果未能解决你的问题,请参考以下文章
Azure 存储:Blob:Python:获取指示符是不是存在 Blob