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!');