Compartilhar via


Transferir objetos de/para o Armazenamento de Blobs do Azure usando PHP

Neste início rápido, você aprenderá a usar o PHP para carregar, baixar e listar blobs de blocos em um contêiner no Armazenamento de Blobs do Azure.

Pré-requisitos

Para acessar o Armazenamento do Azure, você precisará de uma assinatura do Azure. Se você ainda não tiver uma assinatura, crie uma conta gratuita antes de começar.

Todo o acesso ao Armazenamento do Azure ocorre por meio de uma conta de armazenamento. Para este Início Rápido, crie uma conta de armazenamento usando o portal do Azure, o Azure PowerShell ou a CLI do Azure. Para obter ajuda sobre como criar uma conta de armazenamento, confira Criar uma conta de armazenamento.

Verifique se você tem os seguintes pré-requisitos adicionais instalados:

Baixar o aplicativo de exemplo

O aplicativo de exemplo usado neste início rápido é um aplicativo PHP básico.

Use o git para baixar uma cópia do aplicativo para seu ambiente de desenvolvimento.

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

Este comando clona o repositório para sua pasta do git local. Para abrir o aplicativo de exemplo PHP, localize a pasta storage-blobs-php-quickstart e abra o arquivo phpqs.php.

Copiar suas credenciais no Portal do Azure

O aplicativo de exemplo precisa autorizar o acesso à sua conta de armazenamento. Forneça suas credenciais de conta de armazenamento para o aplicativo na forma de uma cadeia de conexão. Para exibir suas credenciais de conta de armazenamento:

  1. No portal do Azure, vá para a sua conta de armazenamento.

  2. Na seção Configurações da visão geral da conta de armazenamento, selecione chaves de acesso para exibir as chaves de acesso da conta e a cadeia de conexão.

  3. Observe o nome da sua conta de armazenamento, que você precisará para autorização.

  4. Localize o valor chave em chave1e selecione Copiar para copiar a chave da conta.

    Captura de tela mostrando como copiar sua chave de conta do portal do Azure

Configure sua string de conexão de armazenamento

No aplicativo, você deve fornecer o nome da conta de armazenamento e a chave da conta para criar a instância blobRestProxy para seu aplicativo. É recomendável armazenar esses identificadores em uma variável de ambiente no computador local que executa o aplicativo. Use um dos exemplos a seguir, dependendo do sistema operacional, para criar a variável de ambiente. Substitua os valores youraccountname e youraccountkey pelo nome da conta e pela chave.

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

Configurar seu ambiente

Pegue a pasta da pasta git local e coloque-a em um diretório fornecido pelo servidor PHP. Em seguida, abra um prompt de comando com escopo para o mesmo diretório e insira: php composer.phar install

Executar o exemplo

Este exemplo cria um arquivo de teste na pasta '.' O programa de exemplo carrega o arquivo de teste no Armazenamento de Blobs, lista os blobs no contêiner e baixa o arquivo com um novo nome.

Execute o exemplo. A saída a seguir é um exemplo da saída retornada ao executar o aplicativo:

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 você pressiona o botão exibido, o programa de exemplo exclui o contêiner de armazenamento e os arquivos. Antes de continuar, verifique a pasta do servidor para obter os dois arquivos. Você pode abri-los e ver que eles são idênticos.

Você também pode usar uma ferramenta como o Gerenciador de Armazenamento do Azure para exibir os arquivos no Armazenamento de Blobs. O Gerenciador de Armazenamento do Azure é uma ferramenta gratuita de multiplataforma que permite que você acesse as informações da sua conta de armazenamento.

Depois de verificar os arquivos, clique em qualquer chave para concluir a demonstração e excluir os arquivos de teste. Agora que você sabe o que o exemplo faz, abra o arquivo example.rb para examinar o código.

Entender o código de exemplo

Em seguida, percorremos o código de exemplo para que você possa entender como ele funciona.

Obter referências aos objetos de armazenamento

A primeira coisa a fazer é criar as referências aos objetos usados para acessar e gerenciar o armazenamento de Blobs. Esses objetos se baseiam uns nos outros e cada um é usado pelo próximo na lista.

  • Crie uma instância do objeto BlobRestProxy de armazenamento do Azure para configurar credenciais de conexão.
  • Crie o objeto BlobService que aponta para o serviço Blob em sua conta de armazenamento.
  • Crie o objeto Container , que representa o contêiner que você está acessando. Os contêineres são usados para organizar seus blobs como você usa pastas no computador para organizar seus arquivos.

Depois de ter o objeto de contêiner blobClient , você poderá criar o objeto blob block que aponta para o blob específico no qual você está interessado. Em seguida, você pode executar operações como carregar, baixar e copiar.

Importante

Os nomes de contêiner devem estar em minúsculas. Consulte Nomenclatura e Referência de Contêineres, Blobs e Metadados para obter mais informações sobre nomes de contêiner e blob.

Nesta seção, você configura uma instância do cliente de armazenamento do Azure, cria uma instância do objeto de serviço de blob, cria um contêiner e define permissões no contêiner para que os blobs sejam públicos. O contêiner é chamado 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);

Carregar blobs para o contêiner

Armazenamento de Blob dá suporte a blobs de bloco, blobs de acréscimo e blobs de página. Os blobs de blocos são os mais usados e é isso que é usado neste início rápido.

Para carregar um arquivo em um blob, obtenha o caminho completo do arquivo concatenando o nome do diretório e o nome do arquivo em sua unidade local. Em seguida, você pode carregar o arquivo no caminho especificado usando o método createBlockBlob( ).

O código de exemplo usa um arquivo local e o carrega no Azure. O arquivo é armazenado como myfile e o nome do blob como fileToUpload no código. O exemplo a seguir carrega o arquivo em seu contêiner chamado 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 executar uma atualização parcial do conteúdo de um blob de blocos, use o método createblocklist( ). Os blobs de blocos podem ter até 4,7 TB e podem ser qualquer coisa, desde planilhas do Excel até arquivos de vídeo grandes. Os blobs de página são usados principalmente para os arquivos VHD usados para apoiar VMs IaaS. Blobs de adição são usados para registro em log, por exemplo, quando você deseja gravar em um arquivo e depois adicionar mais informações. O blob de acréscimo deve ser usado em um único modelo de gravador. A maioria dos objetos armazenados no Armazenamento de Blobs são blobs de blocos.

Listar os blobs em um contêiner

Você pode obter uma lista de arquivos no contêiner usando o método listBlobs( ). O código a seguir recupera a lista de blobs e, em seguida, passa por eles, mostrando os nomes dos blobs encontrados em um contêiner.

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

Obtenha o conteúdo de seus blobs

Obtenha o conteúdo dos blobs usando o método getBlob( ). O código a seguir exibe o conteúdo do blob carregado em uma seção anterior.

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

Limpar os recursos

Se você não precisar mais dos blobs carregados neste início rápido, poderá excluir todo o contêiner usando o método deleteContainer( ). Se os arquivos criados não forem mais necessários, use o método deleteBlob() para excluir os arquivos.

    // 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 desenvolver aplicativos PHP com blobs

Consulte estes recursos adicionais para o desenvolvimento de PHP com o Armazenamento de Blobs:

Próximas etapas

Neste início rápido, você aprendeu a transferir arquivos entre um disco local e o armazenamento de blobs do Azure usando PHP. Para saber mais sobre como trabalhar com PHP, prossiga para o centro de desenvolvedores do PHP.

Para obter mais informações sobre o Gerenciador de Armazenamento e Blobs, consulte Gerenciar recursos de Armazenamento de Blobs do Azure com o Gerenciador de Armazenamento.