beberlei / azure-blob-storage
一个小型库,用于通过服务或StreamWrapper访问Microsoft Windows Azure Blob Storage。
v1.0
2012-05-07 20:34 UTC
This package is auto-updated.
Last update: 2024-09-12 03:46:59 UTC
README
一个小型平台无关库,允许您从PHP中与Windows Azure Blob Storage进行交互。
您可以从任何平台(Windows或Linux)与Windows Azure Blob进行交互,只需一个Azure存储账户即可开始。
特性
- 用于处理文件/块的可编程API
- Streamwrapper
- 容器管理(私有或公共)
- ACLs
代码是从PHP Azure SDK分叉并改编的。它已被清理,并去除了所有PHP Azure SDK依赖项,使其非常轻量。
安装
通过composer推荐
{
"require": {
"beberlei/azure-blob-storage": "*"
}
}
然后使用composer二进制文件
prompt> php composer.phar install
配置
<?php
use Beberlei\AzureBlobStorage\BlobClient;
$accountUrl = "http://myaccount.blob.storage.windows.net";
$accountName = "myaccount";
$accountKey = "abcdefg";
$client = new BlobClient($accountUrl, $accountName, $accountKey);
// With Dev-Storage (localhost:10000)
$client = new BlobClient();
用法
容器API
容器在Azure Blob Storage中相当于具有名称的硬盘。您必须创建一个容器才能存储文件。
<?php
$container = "testing";
if ( ! $client->containerExists($container)) {
$client->createContainer($container);
}
$client->createContainerIfNotExists($container);
$client->deleteContainer($container);
您还可以为容器设置/获取任意元数据。
<?php
$container = "testing_metadata";
$metadata = array('x-ms-application-user' => 'beberlei');
$client->createContainer($container, $metadata);
$metadata = $client->getContainerMetadata($container);
$metadata['x-ms-another-header'] = 'value';
$client->setContainerMetadata($container, $metadata);
块API
容器包含具有名称的块(文件)。Azure Blob Storage在容器中没有目录的概念,但您可以使用"/"(是的,不是空字符串)作为分隔符来模拟它们。
<?php
$container = 'testing_blob';
$client->createContainerIfNotExists($container);
$blobFileName = '/path/to/testing.gif';
$client->putBlob($container, 'testing.gif', $blobFileName);
$client->putBlobData($container, 'testing.gif', file_get_contents($blobFileName));
$client->copyBlob($container, 'testing.gif', $container, 'testing2.gif');
$blob = $client->getBlobInstance($container, 'testing2.gif');
// $blob instanceof Beberlei\AzureBlobStorage\BlobInstance
$localFileName = sys_get_temp_dir() . '/testing2.gif';
$client->getBlob($container, 'testing2.gif', $localFileName);
$data = $client->getBlobData($container, 'testing2.gif');
$blobs = $client->listBlobs($container, 'testing');
// array of Beberlei\AzureBlobStroage\BlobInstance
$client->deleteBlob($containerName, 'testing.gif');
$client->deleteBlob($containerName, 'testing2.gif');
默认情况下,Azure Blob Storage创建的是块Blob而不是页Blob。您可以使用$client->putPageBlob()
API创建页Blob。
Streamwrapper
要注册Windows Azure Blob-Storage的流包装器,您必须定义一个前缀。
<?php
use Beberlei\AzureBlobStorage\BlobClient;
$client = new BlobClient();
$client->registerStreamWrapper('azure');
file_put_contents('azure://test.txt', 'Hello World!');