Condividi tramite


Trasferire oggetti da e verso l'archivio BLOB di Azure usando PHP

In questa guida introduttiva si apprenderà come usare PHP per caricare, scaricare ed elencare BLOB in blocchi in un contenitore nell'archiviazione BLOB di Azure.

Prerequisiti

Per accedere ad Archiviazione di Azure è necessario un abbonamento Azure. Se non si ha già una sottoscrizione, creare un account gratuito prima di iniziare.

Tutto l'accesso all'Archiviazione di Azure avviene tramite un account di archiviazione. Per questa guida introduttiva, creare rapidamente un account di archiviazione usando il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure. Per informazioni sulla creazione di un account di archiviazione, vedere Creare un account di archiviazione.

Assicurarsi di avere installato i prerequisiti aggiuntivi seguenti:

Scaricare l'applicazione di esempio

L'applicazione di esempio usata in questa guida introduttiva è un'applicazione PHP di base.

Usare git per scaricare una copia dell'applicazione nell'ambiente di sviluppo.

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

Questo comando consente di duplicare il repository nella cartella locale git. Per aprire l'applicazione di esempio PHP, cercare la cartella storage-blobs-php-quickstart e aprire il file phpqs.php.

Copiare le credenziali dal portale di Azure

L'applicazione di esempio deve autorizzare l'accesso all'account di archiviazione. Specificare le credenziali dell'account di archiviazione all'applicazione sotto forma di stringa di connessione. Per visualizzare le credenziali dell'account di archiviazione:

  1. Nel portale di Azure passare all'account di archiviazione.

  2. Nella sezione Impostazioni della panoramica dell'account di archiviazione selezionare Chiavi di accesso per visualizzare le chiavi di accesso dell'account e la stringa di connessione.

  3. Prendi nota del nome del tuo account di archiviazione, necessario per l'autorizzazione.

  4. Trovare il valore chiave in key1 e selezionare Copia per copiare la chiave dell'account.

    Screenshot che mostra come copiare la chiave dell'account dal portale di Azure

Configurazione della stringa di connessione della memoria

Nell'applicazione è necessario specificare il nome dell'account di archiviazione e la chiave dell'account per creare l'istanza BlobRestProxy per l'applicazione. È consigliabile archiviare questi identificatori all'interno di una variabile di ambiente nel computer locale che esegue l'applicazione. Usare uno degli esempi seguenti a seconda del sistema operativo per creare la variabile di ambiente. Sostituire i valori youraccountname e youraccountkey con il nome e la chiave dell'account.

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

Configurare il tuo ambiente

Prendere la cartella dalla cartella Git locale e inserirla in una directory servita dal server PHP. Aprire quindi un prompt dei comandi con ambito nella stessa directory e immettere: php composer.phar install

Esegui l'esempio

In questo esempio viene creato un file di test nella cartella '.'. Il programma di esempio carica il file di test nell'archivio BLOB, elenca i BLOB nel contenitore e scarica il file con un nuovo nome.

Esegui l'esempio. L'output seguente è un esempio dell'output restituito durante l'esecuzione dell'applicazione:

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!

Quando si preme il pulsante visualizzato, il programma di esempio elimina il contenitore di archiviazione e i file. Prima di continuare, controllare la cartella del server per i due file. È possibile aprirli e vedere che sono identici.

È anche possibile usare uno strumento come Azure Storage Explorer per visualizzare i file nell'archiviazione BLOB. Azure Storage Explorer è uno strumento multipiattaforma gratuito che consente di accedere alle informazioni dell'account di archiviazione.

Dopo aver verificato i file, premere qualsiasi chiave per completare la demo ed eliminare i file di test. Dopo aver appreso le operazioni dell'esempio, aprire il file example.rb per esaminare il codice.

Comprendere il codice di esempio

Verrà quindi illustrato il codice di esempio in modo che sia possibile comprendere il funzionamento.

Ottenere riferimenti agli oggetti di archiviazione

La prima cosa da fare è creare i riferimenti agli oggetti usati per accedere e gestire l'archiviazione BLOB. Questi oggetti si basano l'uno sull'altro e ognuno viene usato da quello successivo nell'elenco.

  • Creare un'istanza dell'oggetto BlobRestProxy di archiviazione di Azure per configurare le credenziali di connessione.
  • Creare l'oggetto BlobService che punta al servizio BLOB nell'account di archiviazione.
  • Creare l'oggetto Container , che rappresenta il contenitore a cui si accede. I contenitori vengono utilizzati per organizzare i blob, proprio come usi le cartelle sul tuo computer per organizzare i file.

Dopo aver creato l'oggetto contenitore blobClient , è possibile creare l'oggetto BLOB in blocchi che punta al BLOB specifico a cui si è interessati. È quindi possibile eseguire operazioni quali caricamento, download e copia.

Importante

I nomi dei contenitori devono essere in minuscolo. Per altre informazioni sui nomi di contenitori e BLOB, vedere Denominazione e riferimento a contenitori, BLOB e metadati .

In questa sezione viene configurata un'istanza del client di archiviazione di Azure, si crea un'istanza dell'oggetto servizio BLOB, si crea un nuovo contenitore e si impostano le autorizzazioni per il contenitore in modo che i BLOB siano pubblici. Il contenitore è denominato 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);

Caricare i BLOB nel contenitore

L'archiviazione BLOB supporta i blob in blocchi, i blob di aggiunta e i blob di pagine. I BLOB in blocchi sono i più comunemente usati e questo è ciò che viene usato in questa guida introduttiva.

Per caricare un file in un BLOB, ottenete il percorso completo del file unendo il nome della directory e il nome del file sul vostro disco locale. È quindi possibile caricare il file nel percorso specificato usando il metodo createBlockBlob().

Il codice di esempio accetta un file locale e lo carica in Azure. Il file viene archiviato come myfile e il nome del BLOB come fileToUpload nel codice. L'esempio seguente carica il file nel contenitore denominato 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);

Per eseguire un aggiornamento parziale del contenuto di un BLOB in blocchi, usare il metodo createblocklist(). I BLOB in blocchi possono essere di dimensioni pari a 4,7 TB e possono essere qualsiasi elemento, dai fogli di calcolo di Excel ai file video di grandi dimensioni. I BLOB di pagine vengono usati principalmente per i file VHD usati per eseguire il backup di macchine virtuali IaaS. I blob di accodamento sono utilizzati per la registrazione, ad esempio quando si desidera scrivere in un file e poi continuare ad aggiungere ulteriori informazioni. Il BLOB di accodamento dovrebbe essere utilizzato in un modello a singolo scrittore. La maggior parte degli oggetti archiviati nell'archiviazione BLOB è blob in blocchi.

Elencare i BLOB in un contenitore

È possibile ottenere un elenco di file nel contenitore usando il metodo listBlobs(). Il codice seguente recupera l'elenco dei BLOB, quindi esegue un ciclo attraverso di essi, mostrando i nomi dei BLOB trovati in un contenitore.

    $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());

Ottieni il contenuto dei blob

Ottenere il contenuto dei BLOB usando il metodo getBlob(). Nel codice seguente viene visualizzato il contenuto del BLOB caricato in una sezione precedente.

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

Pulire le risorse

Se i BLOB caricati in questa guida introduttiva non sono più necessari, è possibile eliminare l'intero contenitore usando il metodo deleteContainer(). Se i file creati non sono più necessari, usare il metodo deleteBlob() per eliminare i file.

    // 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);   

Risorse per lo sviluppo di applicazioni PHP con BLOB

Vedere queste risorse aggiuntive per lo sviluppo PHP con l'archiviazione BLOB:

Passaggi successivi

In questo argomento di avvio rapido si è appreso come trasferire file tra un disco locale e un archivio BLOB di Azure usando PHP. Per altre informazioni sull'uso di PHP, passare al Centro per sviluppatori PHP.

Per altre informazioni su Storage Explorer e i BLOB, vedere Gestire le risorse di archiviazione BLOB di Azure con Storage Explorer.