Zend_Service_WindowsAzure_Storage_Blob
Blob Speicher speichert ein Set von Binären Daten. Blog Speicher bietet die folgenden drei
Ressourcen an: den Speicher Account, Container und Blobs. Im eigenen Speicher Account bieten
Container einen Weg um Sets von Blobs im Speicher Account zu organisieren.
Blog Speicher wird von Windows Azure als REST API angeboten welcher von
der Klasse Zend_Service_WindowsAzure_Storage_Blob umhüllt ist um ein
natives PHP Interface zum Speicher Account zu bieten.
API Beispiele
Dieser Abschnitt zeigt einige Beispiele der Verwendung der Klasse
Zend_Service_WindowsAzure_Storage_Blob. Andere Features sind im
Download Paket vorhanden sowie in der detailierten API Dokumentation dieser Features.
Erstellung einer Speicher Containers
Bei Verwendung des folgenden Codes kann ein Speicher Container auf dem Development
Speicher erstellt werden.
Erstellung eines Speicher Containers
createContainer('testcontainer');
echo 'Der Name des Containers ist: ' . $result->Name;
]]>
Löschen eines Speicher Containers
Bei Verwendung des folgenden Codes kann ein Blob Speicher Container vom Development
Speicher entfernt werden.
Löschen eines Speicher Containers
deleteContainer('testcontainer');
]]>
Speichern eines Blobs
Bei Verwendung des folgenden Codes kann ein Blob zu einem Blog Speicher Container
auf dem Development Speichers hochgeladen werden. Es ist zu beachten das der
Container hierfür bereits vorher erstellt worden sein muss.
Speichern eines Blobs
putBlob(
'testcontainer', 'example.txt', '/home/maarten/example.txt'
);
echo 'Der Name des Blobs ist: ' . $result->Name;
]]>
Kopieren eines Blobs
Bei Verwendung des folgenden Codes kann ein Blob von innerhalb des Speicher Accounts
kopiert werden. Der Vorteil der Verwendung dieser Methode besteht darin das die
Kopieroperation in der Azure Wolke stattfindet und kein Downloaden vom Blob
stattfinden muss. Es ist zu beachten das in diesem Fall der Container bereits vorher
erstellt worden sein muss.
Kopieren eines Blobs
copyBlob(
'testcontainer', 'example.txt', 'testcontainer', 'example2.txt'
);
echo 'Der Name des kopierten Blobs ist: ' . $result->Name;
]]>
Herunterladen eines Blobs
Bei Verwendung des folgenden Codes kann ein Blob von einem Blob Speicher Container
auf den Development Speicher heruntergeladen werden. Es ist zu beachten das der
Container hierfür bereits vorher erstellt wurden sein und ein Blob darauf
hochgeladen sein muss.
Herunterladen eines Blobs
getBlob(
'testcontainer', 'example.txt', '/home/maarten/example.txt'
);
]]>
Einen Blob öffentlich verfügbar machen
By default, blob storage containers on Windows Azure are protected from public
viewing. If any user on the Internet should have access to a blob container, its ACL
can be set to public. Note that this applies to a complete container and not to a
single blob!
Using the following code, blob storage container ACL can be set on development
storage. Note that the container has already been created before.
Making a blob publicly available
setContainerAcl('testcontainer', Zend_Service_WindowsAzure_Storage_Blob::ACL_PUBLIC);
]]>
Root container
Windows Azure Blob Storage provides support to work with a "root container".
This means that a blob can be stored in the root of your storage account,
i.e. http://myaccount.blob.core.windows.net/somefile.txt.
In order to work with the root container, it should first be created using the
createContainer() method, naming the container
$root. All other operations on the root container should be issued
with the container name set to $root.
Blob storage stream wrapper
The Windows Azure SDK for PHP provides support for registering a blob storage
client as a PHP file stream wrapper. The blob storage stream wrapper provides
support for using regular file operations on Windows Azure Blob Storage.
For example, one can open a file from Windows Azure Blob Storage with
the fopen() function:
Example usage of blob storage stream wrapper
In order to do this, the Windows Azure SDK for PHP blob storage client
must be registered as a stream wrapper. This can be done by calling the
registerStreamWrapper() method:
Registering the blob storage stream wrapper
registerStreamWrapper(); // registers azure:// on this storage client
// or:
$storageClient->registerStreamWrapper('blob://'); // regiters blob:// on this storage client
]]>
To unregister the stream wrapper, the unregisterStreamWrapper()
method can be used.
Shared Access Signature
Windows Azure Bob Storage provides a feature called "Shared Access Signatures". By
default, there is only one level of authorization possible in Windows Azure Blob
Storage: either a container is private or it is public. Shared Access Signatures provide
a more granular method of authorization: read, write, delete and list permissions can be
assigned on a container or a blob and given to a specific client using an URL-based
model.
An example would be the following signature:
http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A06%3A17Z&se=2009-08-17T09%3A56%3A17Z&sr=c&sp=w&sig=hscQ7Su1nqd91OfMTwTkxabhJSaspx%2BD%2Fz8UqZAgn9s%3D
The above signature gives write access to the "phpazuretestshared1"
container of the "phpstorage" account.
Generating a Shared Access Signature
When you are the owner of a Windows Azure Bob Storage account, you can create and
distribute a shared access key for any type of resource in your account. To do this,
the generateSharedAccessUrl() method of the
Zend_Service_WindowsAzure_Storage_Blob storage client can be
used.
The following example code will generate a Shared Access Signature for write access
in a container named "container1", within a timeframe of 3000 seconds.
Generating a Shared Access Signature for a container
generateSharedAccessUrl(
'container1',
'',
'c',
'w',
$storageClient ->isoDate(time() - 500),
$storageClient ->isoDate(time() + 3000)
);
]]>
The following example code will generate a Shared Access Signature for read access
in a blob named test.txt in a container named "container1"
within a time frame of 3000 seconds.
Generating a Shared Access Signature for a blob
generateSharedAccessUrl(
'container1',
'test.txt',
'b',
'r',
$storageClient ->isoDate(time() - 500),
$storageClient ->isoDate(time() + 3000)
);
]]>
Working with Shared Access Signatures from others
When you receive a Shared Access Signature from someone else, you can use the
Windows Azure SDK for PHP to work with the addressed resource. For example, the
following signature can be retrieved from the owner of a storage account:
http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A06%3A17Z&se=2009-08-17T09%3A56%3A17Z&sr=c&sp=w&sig=hscQ7Su1nqd91OfMTwTkxabhJSaspx%2BD%2Fz8UqZAgn9s%3D
The above signature gives write access to the "phpazuretestshared1" "container" of
the phpstorage account. Since the shared key for the account is not known, the
Shared Access Signature can be used to work with the authorized resource.
Consuming a Shared Access Signature for a container
setCredentials(
new Zend_Service_WindowsAzure_Credentials_SharedAccessSignature()
);
$storageClient->getCredentials()->setPermissionSet(array(
'http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A06%3A17Z&se=2009-08-17T09%3A56%3A17Z&sr=c&sp=w&sig=hscQ7Su1nqd91OfMTwTkxabhJSaspx%2BD%2Fz8UqZAgn9s%3D'
));
$storageClient->putBlob(
'phpazuretestshared1', 'NewBlob.txt', 'C:\Files\dataforazure.txt'
);
]]>
Note that there was no explicit permission to write to a specific blob. Instead, the
Windows Azure SDK for PHP determined that a permission was required to either write
to that specific blob, or to write to its container. Since only a signature was
available for the latter, the Windows Azure SDK for PHP chose those credentials to
perform the request on Windows Azure blob storage.