Přenos objektů do a z úložiště objektů blob v Azure pomocí PHP

V tomto rychlém startu zjistíte, jak pomocí PHP nahrávat, stahovat a vypisovat objekty blob bloku v kontejneru v úložišti objektů blob v Azure.

Požadavky

Pro přístup ke službě Azure Storage budete potřebovat předplatné Azure. Pokud ještě předplatné nemáte, vytvořte si bezplatný účet , než začnete.

Veškerý přístup ke službě Azure Storage probíhá prostřednictvím účtu úložiště. Pro účely tohoto rychlého startu vytvořte účet úložiště pomocí Azure Portal, Azure PowerShell nebo Azure CLI. Nápovědu k vytvoření účtu úložiště najdete v tématu Vytvoření účtu úložiště.

Ujistěte se, že máte nainstalované následující další požadavky:

Stažení ukázkové aplikace

Ukázková aplikace použitá v tomto rychlém startu je základní aplikace PHP.

Ke stažení kopie aplikace do vývojového prostředí použijte git .

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

Tento příkaz naklonuje úložiště do vaší místní složky gitu. Pokud chcete ukázkovou aplikaci PHP otevřít, vyhledejte složku storage-blobs-php-quickstart a otevřete soubor phpqs.php.

Zkopírování přihlašovacích údajů z webu Azure Portal

Ukázková aplikace potřebuje autorizovat přístup k vašemu účtu úložiště. Zadejte přihlašovací údaje k účtu úložiště aplikaci ve formě připojovacího řetězce. Zobrazení přihlašovacích údajů účtu úložiště:

  1. V Azure Portal přejděte na svůj účet úložiště.

  2. V části Nastavení v přehledu účtu úložiště vyberte Přístupové klíče , abyste zobrazili přístupové klíče účtu a připojovací řetězec.

  3. Poznamenejte si název svého účtu úložiště, který budete potřebovat k autorizaci.

  4. V části klíč1 vyhledejte hodnotu Klíč a výběrem možnosti Kopírovat zkopírujte klíč účtu.

    Snímek obrazovky ukazující zkopírování klíče účtu z webu Azure Portal

Konfigurace připojovacího řetězce úložiště

V aplikaci musíte zadat název svého účtu úložiště a klíč účtu pro vytvoření instance BlobRestProxy ve vaší aplikaci. Doporučujeme uložit tyto identifikátory do proměnné prostředí v místním počítači, na kterém aplikaci spouštíte. V závislosti na operačním systému vytvořte proměnnou prostředí pomocí jednoho z následujících příkladů. Hodnoty youraccountname a youraccountkey nahraďte názvem a klíčem vašeho účtu.

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

Konfigurace prostředí

Nahraďte složku v adresáři obsluhovaném vaším serverem PHP složkou z vaší místní složky gitu. Pak otevřete příkazový řádek v oboru stejného adresáře a zadejte: php composer.phar install

Spuštění ukázky

Tato ukázka vytvoří ve složce „.“ testovací soubor. Ukázkový program nahraje testovací soubor do úložiště objektů blob, vypíše objekty blob v kontejneru a stáhne soubor s novým názvem.

Spusťte ukázku. Následující výstup je příkladem výstupu vráceného po spuštění aplikace:

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!

Když stisknete zobrazenou klávesu, ukázkový program odstraní kontejner úložiště i soubory. Než budete pokračovat, zkontrolujte, jestli složka na vašem serveru obsahuje příslušné dva soubory. Můžete je otevřít a podívat se, že jsou identické.

K zobrazení souborů v úložišti objektů blob můžete použít také nástroj, jako je Průzkumník služby Azure Storage. Průzkumník služby Azure Storage je bezplatný nástroj pro více platforem, který umožňuje přístup k informacím o účtu úložiště.

Po ověření souborů stiskněte libovolnou klávesu a dokončete ukázku a odstraňte testovací soubory. Když teď víte, co ukázka dělá, otevřete soubor example.rb a prohlédněte si kód.

Vysvětlení vzorového kódu

Dále si projdeme vzorový kód, abyste pochopili, jak funguje.

Získání odkazů na objekty úložiště

První věc, kterou je potřeba udělat, je vytvořit odkazy na objekty sloužící k přístupu k úložišti objektů blob a jeho správě. Tyto objekty se vzájemně využívají a každý z nich je využívaný dalším objektem v seznamu.

  • Vytvořte instanci objektu úložiště Azure BlobRestProxy pro nastavení přihlašovacích údajů pro připojení.
  • Vytvořte objekt BlobService, který odkazuje na službu Blob service ve vašem účtu úložiště.
  • Vytvořte objekt Container, který představuje kontejner, ke kterému přistupujete. Kontejnery slouží k uspořádání objektů blob podobně jako složky na počítači k uspořádání souborů.

Jakmile budete mít objekt kontejneru blobClient, můžete vytvořit objekt blob Block, který odkazuje na konkrétní objekt blob, který vás zajímá. Pak můžete provádět operace, jako jsou nahrávání, stahování a kopírování.

Důležité

Názvy kontejnerů musí být malými písmeny. Další informace o pojmenování kontejnerů a objektů blob najdete v tématu Názvy kontejnerů, objektů blob a metadat a odkazování na ně.

V této části vytvoříte instanci klienta úložiště Azure, instanci objektu služby Blob, nový kontejner a nastavíte oprávnění ke kontejneru tak, aby objekty blob byly veřejné. Kontejner má název 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);

Nahrání objektů blob do kontejneru

Úložiště objektů blob podporuje objekty blob bloku, doplňovací objekty blob a objekty blob stránky. Nejčastěji používané jsou objekty blob bloku, které se používají také v tomto rychlém startu.

Pokud chcete nahrát soubor do objektu blob, získejte úplnou cestu k souboru spojením názvu adresáře a názvu souboru na místním disku. Pak můžete soubor nahrát do zadané cesty pomocí metody createBlockBlob().

Ukázkový kód vezme místní soubor a nahraje ho do Azure. Soubor se uloží jako myfile a název objektu blob se v kódu uloží jako fileToUpload. Následující příklad nahraje soubor do kontejneru 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);

Pokud chcete upravit část obsahu objektu blob bloku, použijte metodu createblocklist(). Objekty blob bloku můžou mít velikost až 4,7 TB a můžou být čímkoli od tabulky aplikace Excel po velké videosoubory. Objekty blob stránky se používají hlavně pro soubory VHD využívané virtuálními počítači IaaS. Doplňovací objekty blob se používají k protokolování, například když chcete zapisovat do souboru a pak přidávat další informace. Doplňovací objekt blob by se měl používat v modelu s jedním zapisujícím procesem. Většina objektů uložených v úložišti objektů blob je objekty blob bloku.

Seznam objektů blob v kontejneru

Seznam souborů v kontejneru můžete získat pomocí metody listBlobs(). Následující kód načte seznam objektů blob, pak je ve smyčce projde a zobrazí názvy nalezených objektů blob v kontejneru.

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

Získání obsahu objektů blob

Obsah objektů blob získáte pomocí metody getBlob(). Následující kód zobrazí obsah objektu blob nahraného v předchozí části.

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

Vyčištění prostředků

Pokud už nepotřebujete objekty blob nahrané v rámci tohoto rychlého startu, můžete celý kontejner odstranit pomocí metody deleteContainer(). Pokud už nepotřebujete vytvořené soubory, pomocí metody deleteBlob() je odstraníte.

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

Zdroje informací pro vývoj aplikací PHP s využitím objektů blob

Prohlédněte si tyto další zdroje informací o vývoji v PHP s využitím úložiště objektů blob:

Další kroky

V tomto rychlém startu jste zjistili, jak přenášet soubory mezi místním diskem a úložištěm objektů blob v Azure pomocí PHP. Další informace o práci s PHP najdete v našem Centru pro vývojáře PHP.

Další informace o Průzkumníku služby Storage a objektech blob najdete v tématu Správa prostředků úložiště objektů blob v Azure pomocí Průzkumníka služby Storage.