Compartir a través de


Transferencia de objetos hacia y desde Azure Blob Storage mediante PHP

En este inicio rápido, aprenderá a usar PHP para cargar, descargar y enumerar blobs en bloques en un contenedor de Azure Blob Storage.

Prerrequisitos

Para acceder a Azure Storage, necesitará una suscripción de Azure. Si todavía no tiene una suscripción, cree una cuenta gratuita antes de empezar.

Todo el acceso a Azure Storage tiene lugar mediante una cuenta de almacenamiento. En este inicio rápido, cree una cuenta de almacenamiento con Azure Portal, Azure PowerShell o la CLI de Azure. Si necesita ayuda para crear una cuenta de almacenamiento, consulte Creación de una cuenta de almacenamiento.

Asegúrese de que tiene instalados los siguientes requisitos previos adicionales:

Descarga de la aplicación de ejemplo

La aplicación de ejemplo que se usa en este inicio rápido es una aplicación PHP básica.

Use git para descargar una copia de la aplicación en su entorno de desarrollo.

git clone https://github.com/Azure-Samples/storage-blobs-php-quickstart.git

Este comando clona el repositorio en la carpeta git local. Para abrir la aplicación de ejemplo php, busque la carpeta storage-blobs-php-quickstart y abra el archivo phpqs.php.

Copia tus credenciales del portal de Azure

La aplicación de ejemplo debe autorizar el acceso a la cuenta de almacenamiento. Proporcione las credenciales de la cuenta de almacenamiento a la aplicación en forma de cadena de conexión. Para ver las credenciales de la cuenta de almacenamiento:

  1. Inicie sesión en el portal de Azure y vaya a su cuenta de almacenamiento.

  2. En la sección Configuración de la información general de la cuenta de almacenamiento, seleccione Claves de acceso para mostrar las claves de acceso y la cadena de conexión de la cuenta.

  3. Anote el nombre de la cuenta de almacenamiento, que necesitará para la autorización.

  4. Busque el valor de Key en key1y seleccione Copiar para copiar la clave de cuenta.

    Captura de pantalla que muestra cómo copiar la clave de cuenta desde Azure Portal

Configuración de la cadena de conexión de almacenamiento.

En la aplicación, debe proporcionar el nombre de la cuenta de almacenamiento y la clave de cuenta para crear la instancia de BlobRestProxy para la aplicación. Se recomienda almacenar estos identificadores dentro de una variable de entorno en la máquina local que ejecuta la aplicación. Use uno de los ejemplos siguientes en función del sistema operativo para crear la variable de entorno. Reemplace los valores youraccountname y youraccountkey por el nombre y la clave de la cuenta.

export ACCOUNT_NAME=<youraccountname>
export ACCOUNT_KEY=<youraccountkey>

Configurar su entorno

Tome la carpeta de la carpeta git local y colóquela en un directorio servido por el servidor PHP. A continuación, abra una ventana de comandos en ese mismo directorio y escriba: php composer.phar install

Ejecución del ejemplo

En este ejemplo se crea un archivo de prueba en la carpeta ".". El programa de ejemplo carga el archivo de prueba en Blob Storage, enumera los blobs del contenedor y descarga el archivo con un nuevo nombre.

Ejecute el ejemplo. La salida siguiente es un ejemplo de la salida devuelta al ejecutar la aplicación:

Uploading BlockBlob: HelloWorld.txt
These are the blobs present in the container: HelloWorld.txt: https://myexamplesacct.blob.core.windows.net/blockblobsleqvxd/HelloWorld.txt

This is the content of the blob uploaded: Hello Azure!

Al presionar el botón mostrado, el programa de ejemplo elimina el contenedor de almacenamiento y los archivos. Antes de continuar, compruebe la carpeta del servidor para los dos archivos. Puede abrirlos y ver que son idénticos.

También puede usar una herramienta como Explorador de Azure Storage para ver los archivos de Blob Storage. El Explorador de Azure Storage es una herramienta gratuita multiplataforma que permite acceder a la información de la cuenta de almacenamiento.

Después de comprobar los archivos, presione cualquier clave para finalizar la demostración y eliminar los archivos de prueba. Ahora que sabe lo que hace el ejemplo, abra el archivo example.rb para examinar el código.

Descripción del código de ejemplo

A continuación, le guiaremos por el código de ejemplo para que pueda comprender cómo funciona.

Obtención de referencias a los objetos de almacenamiento

Lo primero que debe hacer es crear las referencias a los objetos usados para acceder y administrar Blob Storage. Estos objetos se construyen unos sobre otros, y cada uno es utilizado por el siguiente de la lista.

  • Cree una instancia del objeto BlobRestProxy de Azure Storage para configurar las credenciales de conexión.
  • Cree el objeto BlobService que apunte al servicio Blob en la cuenta de almacenamiento.
  • Cree el objeto Container , que representa el contenedor al que está accediendo. Los contenedores se usan para organizar los blobs de la misma manera que usas carpetas en tu ordenador para organizar tus archivos.

Una vez que tenga el objeto contenedor blobClient, puede crear el objeto Block blob que apunta al blob específico que le interesa. A continuación, puede realizar operaciones como cargar, descargar y copiar.

Importante

Los nombres de contenedor deben estar en minúsculas. Consulte Nomenclatura y referencia de contenedores, blobs y metadatos para obtener más información sobre los nombres de contenedor y blob.

En esta sección, configurará una instancia del cliente de Azure Storage, creará una instancia del objeto blob service, creará un contenedor y establecerá permisos en el contenedor para que los blobs sean públicos. El contenedor se denomina quickstartblobs.

    # Setup a specific instance of an Azure::Storage::Client
    $connectionString = "DefaultEndpointsProtocol=https;AccountName=".getenv('account_name').";AccountKey=".getenv('account_key');

    // Create blob client.
    $blobClient = BlobRestProxy::createBlobService($connectionString);

    # Create the BlobService that represents the Blob service for the storage account
    $createContainerOptions = new CreateContainerOptions();

    $createContainerOptions->setPublicAccess(PublicAccessType::CONTAINER_AND_BLOBS);

    // Set container metadata.
    $createContainerOptions->addMetaData("key1", "value1");
    $createContainerOptions->addMetaData("key2", "value2");

    $containerName = "blockblobs".generateRandomString();

    try    {
        // Create container.
        $blobClient->createContainer($containerName, $createContainerOptions);

Carga de blobs al contenedor

Blob Storage admite blobs en bloques, blobs en anexos y blobs en páginas. Los blobs en bloques son los más usados y eso es lo que se usa en este inicio rápido.

Para cargar un archivo en un blob, obtenga la ruta de acceso completa del archivo uniendo el nombre del directorio y el nombre de archivo en la unidad local. A continuación, puede cargar el archivo en la ruta de acceso especificada mediante el método createBlockBlob().

El código de ejemplo toma un archivo local y lo carga en Azure. El archivo se almacena como myfile y el nombre del blob como fileToUpload en el código. En el ejemplo siguiente se carga el archivo en el contenedor denominado quickstartblobs.

    $myfile = fopen("HelloWorld.txt", "w") or die("Unable to open file!");
    fclose($myfile);

    # Upload file as a block blob
    echo "Uploading BlockBlob: ".PHP_EOL;
    echo $fileToUpload;
    echo "<br />";

    $content = fopen($fileToUpload, "r");

    //Upload blob
    $blobClient->createBlockBlob($containerName, $fileToUpload, $content);

Para realizar una actualización parcial del contenido de un blob en bloques, use el método createblocklist(). Los blobs en bloques pueden ser tan grandes como 4,7 TB y pueden ser cualquier cosa desde hojas de cálculo de Excel hasta archivos de vídeo grandes. Los blobs en páginas se usan principalmente para los archivos VHD que se usan para realizar copias de seguridad de máquinas virtuales IaaS. Los blobs en anexos se utilizan para el registro, por ejemplo, cuando desea escribir en un archivo y luego sigue agregando más información. Append blob debería usarse en un modelo con un solo escritor. La mayoría de los objetos almacenados en Blob Storage son blobs en bloques.

Listar los blobs en un contenedor

Puede obtener una lista de archivos en el contenedor mediante el método listBlobs(). El código siguiente recupera la lista de blobs y, a continuación, recorre en bucle los nombres de los blobs que se encuentran en un contenedor.

    $listBlobsOptions = new ListBlobsOptions();
    $listBlobsOptions->setPrefix("HelloWorld");

    echo "These are the blobs present in the container: ";

    do{
        $result = $blobClient->listBlobs($containerName, $listBlobsOptions);
        foreach ($result->getBlobs() as $blob)
        {
            echo $blob->getName().": ".$blob->getUrl()."<br />";
        }

        $listBlobsOptions->setContinuationToken($result->getContinuationToken());
    } while($result->getContinuationToken());

Obtención del contenido de los blobs

Obtenga el contenido de los blobs mediante el método getBlob(). El código siguiente muestra el contenido del blob cargado en una sección anterior.

    $blob = $blobClient->getBlob($containerName, $fileToUpload);
    fpassthru($blob->getContentStream());

Limpieza de recursos

Si ya no necesita los blobs cargados en este inicio rápido, puede eliminar todo el contenedor mediante el método deleteContainer(). Si los archivos creados ya no son necesarios, use el método deleteBlob() para eliminar los archivos.

    // Delete blob.
    echo "Deleting Blob".PHP_EOL;
    echo $fileToUpload;
    echo "<br />";
    $blobClient->deleteBlob($_GET["containerName"], $fileToUpload);

    // Delete container.
    echo "Deleting Container".PHP_EOL;
    echo $_GET["containerName"].PHP_EOL;
    echo "<br />";
    $blobClient->deleteContainer($_GET["containerName"]);

    //Deleting local file
    echo "Deleting file".PHP_EOL;
    echo "<br />";
    unlink($fileToUpload);   

Recursos para desarrollar aplicaciones PHP con blobs

Consulte estos recursos adicionales para el desarrollo de PHP con Blob Storage:

Pasos siguientes

En este inicio rápido, ha aprendido a transferir archivos entre un disco local y Azure Blob Storage mediante PHP. Para obtener más información sobre cómo trabajar con PHP, continúe con nuestro Centro para desarrolladores de PHP.

Para más información sobre el Explorador de Storage y blobs, consulte Administración de recursos de Azure Blob Storage con el Explorador de Storage.