|
|
@@ -10,9 +10,9 @@
|
|
|
</para>
|
|
|
|
|
|
<para>
|
|
|
- Blob Storage is offered by Windows Azure as a <acronym>REST</acronym> API which is
|
|
|
- wrapped by the <classname>Zend_Service_WindowsAzure_Storage_Blob</classname> class in
|
|
|
- order to provide a native PHP interface to the storage account.
|
|
|
+ Blob Storage is offered by Windows Azure as a <acronym>REST</acronym> <acronym>API</acronym>
|
|
|
+ which is wrapped by the <classname>Zend_Service_WindowsAzure_Storage_Blob</classname> class
|
|
|
+ in order to provide a native <acronym>PHP</acronym> interface to the storage account.
|
|
|
</para>
|
|
|
|
|
|
<sect2 id="zend.service.windowsazure.storage.blob.api">
|
|
|
@@ -21,8 +21,8 @@
|
|
|
<para>
|
|
|
This topic lists some examples of using the
|
|
|
<classname>Zend_Service_WindowsAzure_Storage_Blob</classname> class. Other features are
|
|
|
- available in the download package, as well as a detailed API documentation of those
|
|
|
- features.
|
|
|
+ available in the download package, as well as a detailed <acronym>API</acronym>
|
|
|
+ documentation of those features.
|
|
|
</para>
|
|
|
|
|
|
<sect3 id="zend.service.windowsazure.storage.blob.api.create-container">
|
|
|
@@ -33,7 +33,7 @@
|
|
|
storage.
|
|
|
</para>
|
|
|
|
|
|
- <example id="zend.service.windowsazure.storage.blob.api.create-container">
|
|
|
+ <example id="zend.service.windowsazure.storage.blob.api.create-container.example">
|
|
|
<title>Creating a storage container</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -53,7 +53,7 @@ echo 'Container name is: ' . $result->Name;
|
|
|
storage.
|
|
|
</para>
|
|
|
|
|
|
- <example id="zend.service.windowsazure.storage.blob.api.delete-container">
|
|
|
+ <example id="zend.service.windowsazure.storage.blob.api.delete-container.example">
|
|
|
<title>Deleting a storage container</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -71,7 +71,7 @@ $storageClient->deleteContainer('testcontainer');
|
|
|
development storage. Note that the container has already been created before.
|
|
|
</para>
|
|
|
|
|
|
- <example id="zend.service.windowsazure.storage.blob.api.storing-blob">
|
|
|
+ <example id="zend.service.windowsazure.storage.blob.api.storing-blob.example">
|
|
|
<title>Storing a blob</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -91,13 +91,13 @@ echo 'Blob name is: ' . $result->Name;
|
|
|
<title>Copying a blob</title>
|
|
|
|
|
|
<para>
|
|
|
- Using the following code, a blob can be copied from inside the storage account. The
|
|
|
+ Using the following code, a blob can be copied from inside the storage account. The
|
|
|
advantage of using this method is that the copy operation occurs in the Azure cloud
|
|
|
and does not involve downloading the blob. Note that the container has already been
|
|
|
created before.
|
|
|
</para>
|
|
|
|
|
|
- <example id="zend.service.windowsazure.storage.blob.api.copy-blob">
|
|
|
+ <example id="zend.service.windowsazure.storage.blob.api.copy-blob.example">
|
|
|
<title>Copying a blob</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -122,7 +122,7 @@ echo 'Copied blob name is: ' . $result->Name;
|
|
|
blob has been uploaded.
|
|
|
</para>
|
|
|
|
|
|
- <example id="zend.service.windowsazure.storage.blob.api.download-blob">
|
|
|
+ <example id="zend.service.windowsazure.storage.blob.api.download-blob.example">
|
|
|
<title>Downloading a blob</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -151,7 +151,7 @@ $storageClient->getBlob(
|
|
|
storage. Note that the container has already been created before.
|
|
|
</para>
|
|
|
|
|
|
- <example id="zend.service.windowsazure.storage.blob.api.public-blob">
|
|
|
+ <example id="zend.service.windowsazure.storage.blob.api.public-blob.example">
|
|
|
<title>Making a blob publicly available</title>
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
@@ -163,33 +163,33 @@ $storageClient->setContainerAcl('testcontainer', Zend_Service_WindowsAzure_Stora
|
|
|
</example>
|
|
|
</sect3>
|
|
|
</sect2>
|
|
|
-
|
|
|
+
|
|
|
<sect2 id="zend.service.windowsazure.storage.blob.root">
|
|
|
<title>Root container</title>
|
|
|
|
|
|
<para>
|
|
|
- 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. <code>http://myaccount.blob.core.windows.net/somefile.txt</code>.
|
|
|
+ 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. <filename>http://myaccount.blob.core.windows.net/somefile.txt</filename>.
|
|
|
</para>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
In order to work with the root container, it should first be created using the
|
|
|
<methodname>createContainer()</methodname> method, naming the container
|
|
|
- <varname>$root</varname>. All other operations on the root container should be issued
|
|
|
+ <varname>$root</varname>. All other operations on the root container should be issued
|
|
|
with the container name set to <varname>$root</varname>.
|
|
|
</para>
|
|
|
</sect2>
|
|
|
-
|
|
|
+
|
|
|
<sect2 id="zend.service.windowsazure.storage.blob.wrapper">
|
|
|
<title>Blob storage stream wrapper</title>
|
|
|
|
|
|
<para>
|
|
|
- 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 <functionname>fopen()</functionname> function:
|
|
|
+ The Windows Azure <acronym>SDK</acronym> for <acronym>PHP</acronym> provides support
|
|
|
+ for registering a blob storage client as a <acronym>PHP</acronym> 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 <methodname>fopen()</methodname> function:
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.service.windowsazure.storage.blob.wrapper.sample">
|
|
|
@@ -203,11 +203,11 @@ $fileHandle = fopen('azure://mycontainer/myfile.txt', 'r');
|
|
|
fclose($fileHandle);
|
|
|
]]></programlisting>
|
|
|
</example>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
- 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
|
|
|
- <methodname>registerStreamWrapper()</methodname> method:
|
|
|
+ In order to do this, the Windows Azure <acronym>SDK</acronym> for <acronym>PHP</acronym>
|
|
|
+ blob storage client must be registered as a stream wrapper. This can be done by calling
|
|
|
+ the <methodname>registerStreamWrapper()</methodname> method:
|
|
|
</para>
|
|
|
|
|
|
<example id="zend.service.windowsazure.storage.blob.wrapper.register">
|
|
|
@@ -215,14 +215,17 @@ fclose($fileHandle);
|
|
|
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
|
|
|
-$storageClient->registerStreamWrapper(); // registers azure:// on this storage client
|
|
|
+
|
|
|
+// registers azure:// on this storage client
|
|
|
+$storageClient->registerStreamWrapper();
|
|
|
|
|
|
// or:
|
|
|
|
|
|
-$storageClient->registerStreamWrapper('blob://'); // regiters blob:// on this storage client
|
|
|
+// regiters blob:// on this storage client
|
|
|
+$storageClient->registerStreamWrapper('blob://');
|
|
|
]]></programlisting>
|
|
|
</example>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
To unregister the stream wrapper, the <methodname>unregisterStreamWrapper()</methodname>
|
|
|
method can be used.
|
|
|
@@ -240,20 +243,20 @@ $storageClient->registerStreamWrapper('blob://'); // regiters blob:// on this st
|
|
|
assigned on a container or a blob and given to a specific client using an URL-based
|
|
|
model.
|
|
|
</para>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
An example would be the following signature:
|
|
|
</para>
|
|
|
-
|
|
|
+
|
|
|
<literallayout>
|
|
|
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
|
|
|
</literallayout>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
The above signature gives write access to the "phpazuretestshared1"
|
|
|
container of the "phpstorage" account.
|
|
|
</para>
|
|
|
-
|
|
|
+
|
|
|
<sect3 id="zend.service.windowsazure.storage.blob.sharedaccesssig.generate">
|
|
|
<title>Generating a Shared Access Signature</title>
|
|
|
|
|
|
@@ -264,7 +267,7 @@ http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A0
|
|
|
<classname>Zend_Service_WindowsAzure_Storage_Blob</classname> storage client can be
|
|
|
used.
|
|
|
</para>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
The following example code will generate a Shared Access Signature for write access
|
|
|
in a container named "container1", within a timeframe of 3000 seconds.
|
|
|
@@ -278,14 +281,14 @@ $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
|
|
|
$sharedAccessUrl = $storageClient->generateSharedAccessUrl(
|
|
|
'container1',
|
|
|
'',
|
|
|
- 'c',
|
|
|
+ 'c',
|
|
|
'w',
|
|
|
$storageClient ->isoDate(time() - 500),
|
|
|
$storageClient ->isoDate(time() + 3000)
|
|
|
);
|
|
|
]]></programlisting>
|
|
|
</example>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
The following example code will generate a Shared Access Signature for read access
|
|
|
in a blob named <filename>test.txt</filename> in a container named "container1"
|
|
|
@@ -300,7 +303,7 @@ $storageClient = new Zend_Service_WindowsAzure_Storage_Blob();
|
|
|
$sharedAccessUrl = $storageClient->generateSharedAccessUrl(
|
|
|
'container1',
|
|
|
'test.txt',
|
|
|
- 'b',
|
|
|
+ 'b',
|
|
|
'r',
|
|
|
$storageClient ->isoDate(time() - 500),
|
|
|
$storageClient ->isoDate(time() + 3000)
|
|
|
@@ -308,20 +311,21 @@ $sharedAccessUrl = $storageClient->generateSharedAccessUrl(
|
|
|
]]></programlisting>
|
|
|
</example>
|
|
|
</sect3>
|
|
|
-
|
|
|
+
|
|
|
<sect3 id="zend.service.windowsazure.storage.blob.sharedaccesssig.consume">
|
|
|
<title>Working with Shared Access Signatures from others</title>
|
|
|
|
|
|
<para>
|
|
|
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:
|
|
|
+ Windows Azure <acronym>SDK</acronym> for <acronym>PHP</acronym> to work with the
|
|
|
+ addressed resource. For example, the following signature can be retrieved from the
|
|
|
+ owner of a storage account:
|
|
|
</para>
|
|
|
-
|
|
|
+
|
|
|
<literallayout>
|
|
|
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
|
|
|
</literallayout>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
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
|
|
|
@@ -334,25 +338,26 @@ http://phpstorage.blob.core.windows.net/phpazuretestshared1?st=2009-08-17T09%3A0
|
|
|
<programlisting language="php"><![CDATA[
|
|
|
$storageClient = new Zend_Service_WindowsAzure_Storage_Blob(
|
|
|
'blob.core.windows.net', 'phpstorage', ''
|
|
|
-);
|
|
|
-$storageClient->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->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'
|
|
|
);
|
|
|
]]></programlisting>
|
|
|
</example>
|
|
|
-
|
|
|
+
|
|
|
<para>
|
|
|
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.
|
|
|
+ Windows Azure <acronym>SDK</acronym> for <acronym>PHP</acronym> 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
|
|
|
+ <acronym>SDK</acronym> for <acronym>PHP</acronym> chose those credentials to perform
|
|
|
+ the request on Windows Azure blob storage.
|
|
|
</para>
|
|
|
</sect3>
|
|
|
</sect2>
|