Přenos objektů do a z úložiště objektů blob v Azure pomocí PHPTransfer objects to/from Azure Blob storage using 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.In this quickstart, you learn how to use PHP to upload, download, and list block blobs in a container in Azure Blob storage.

PředpokladyPrerequisites

Pokud chcete získat přístup k Azure Storage, budete potřebovat předplatné Azure.To access Azure Storage, you'll need an Azure subscription. Pokud ještě předplatné nemáte, vytvořte si bezplatný účet před tím, než začnete.If you don't already have a subscription, create a free account before you begin.

Veškerý přístup k Azure Storage probíhá prostřednictvím účtu úložiště.All access to Azure Storage takes place through a storage account. V tomto rychlém startu vytvořte účet úložiště pomocí Azure Portal, Azure PowerShell nebo Azure CLI.For this quickstart, create a storage account using the Azure portal, Azure PowerShell, or Azure CLI. Nápovědu k vytvoření účtu úložiště najdete v tématu Vytvoření účtu úložiště.For help creating a storage account, see Create a storage account.

Ujistěte se, že máte nainstalované následující další požadavky:Make sure you have the following additional prerequisites installed:

Stažení ukázkové aplikaceDownload the sample application

Ukázková aplikace použitá v tomto rychlém startu je základní aplikace PHP.The sample application used in this quickstart is a basic PHP application.

Pomocí Gitu si stáhněte kopii aplikace do vývojového prostředí.Use git to download a copy of the application to your development environment.

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.This command clones the repository to your local git folder. Pokud chcete ukázkovou aplikaci PHP otevřít, vyhledejte složku storage-blobs-php-quickstart a otevřete soubor phpqs.php.To open the PHP sample application, look for the storage-blobs-php-quickstart folder, and open the phpqs.php file.

Zkopírování přihlašovacích údajů z webu Azure PortalCopy your credentials from the Azure portal

Ukázková aplikace potřebuje autorizovat přístup k vašemu účtu úložiště.The sample application needs to authorize access to your storage account. Zadejte přihlašovací údaje účtu úložiště do aplikace ve formě připojovacího řetězce.Provide your storage account credentials to the application in the form of a connection string. Zobrazení přihlašovacích údajů účtu úložiště:To view your storage account credentials:

  1. Do Azure Portal přejít na účet úložiště.In to the Azure portal go to your storage account.

  2. V části Nastavení v přehledu účtu úložiště vyberte přístupové klíče a zobrazte klíče pro přístup k účtu a připojovací řetězec.In the Settings section of the storage account overview, select Access keys to display your account access keys and connection string.

  3. Poznamenejte si název svého účtu úložiště, který budete potřebovat k autorizaci.Note the name of your storage account, which you'll need for authorization.

  4. Vyhledejte klíčovou hodnotu v části Klíč1a výběrem Kopírovat Zkopírujte klíč účtu.Find the Key value under key1, and select Copy to copy the account key.

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

Konfigurace připojovacího řetězce úložištěConfigure your storage connection string

V aplikaci musíte zadat název svého účtu úložiště a klíč účtu pro vytvoření instance BlobRestProxy ve vaší aplikaci.In the application, you must provide your storage account name and account key to create the BlobRestProxy instance for your application. 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.It is recommended to store these identifiers within an environment variable on the local machine running the application. V závislosti na operačním systému vytvořte proměnnou prostředí pomocí jednoho z následujících příkladů.Use one of the following examples depending on your Operating System to create the environment variable. Hodnoty youraccountname a youraccountkey nahraďte názvem a klíčem vašeho účtu.Replace the youraccountname and youraccountkey values with your account name and key.

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

Konfigurace prostředíConfigure your environment

Nahraďte složku v adresáři obsluhovaném vaším serverem PHP složkou z vaší místní složky gitu.Take the folder from your local git folder and place it in a directory served by your PHP server. Pak otevřete příkazový řádek v oboru stejného adresáře a zadejte: php composer.phar installThen, open a command prompt scoped to that same directory and enter: php composer.phar install

Spuštění ukázkyRun the sample

Tato ukázka vytvoří ve složce „.“ testovací soubor.This sample creates a test file in the '.' folder. 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.The sample program uploads the test file to Blob storage, lists the blobs in the container, and downloads the file with a new name.

Spusťte ukázku.Run the sample. Následující výstup je příkladem výstupu vráceného po spuštění aplikace:The following output is an example of the output returned when running the application:

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.When you press the button displayed, the sample program deletes the storage container and the files. Než budete pokračovat, zkontrolujte, jestli složka na vašem serveru obsahuje příslušné dva soubory.Before you continue, check your server's folder for the two files. Můžete je otevřít a podívat se, že jsou identické.You can open them and see they are identical.

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.You can also use a tool such as the Azure Storage Explorer to view the files in Blob 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ě.Azure Storage Explorer is a free cross-platform tool that allows you to access your storage account information.

Po ověření souborů stiskněte libovolnou klávesu a dokončete ukázku a odstraňte testovací soubory.After you've verified the files, hit any key to finish the demo and delete the test files. Když teď víte, co ukázka dělá, otevřete soubor example.rb a prohlédněte si kód.Now that you know what the sample does, open the example.rb file to look at the code.

Vysvětlení vzorového kóduUnderstand the sample code

Dále si projdeme vzorový kód, abyste pochopili, jak funguje.Next, we walk through the sample code so that you can understand how it works.

Získání odkazů na objekty úložištěGet references to the storage objects

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ě.The first thing to do is create the references to the objects used to access and manage Blob storage. Tyto objekty se vzájemně využívají a každý z nich je využívaný dalším objektem v seznamu.These objects build on each other, and each is used by the next one in the list.

  • Vytvořte instanci objektu úložiště Azure BlobRestProxy pro nastavení přihlašovacích údajů pro připojení.Create an instance of the Azure storage BlobRestProxy object to set up connection credentials.
  • Vytvořte objekt BlobService, který odkazuje na službu Blob service ve vašem účtu úložiště.Create the BlobService object that points to the Blob service in your storage account.
  • Vytvořte objekt Container, který představuje kontejner, ke kterému přistupujete.Create the Container object, which represents the container you are accessing. Kontejnery slouží k uspořádání objektů blob podobně jako složky na počítači k uspořádání souborů.Containers are used to organize your blobs like you use folders on your computer to organize your files.

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á.Once you have the blobClient container object, you can create the Block blob object that points to the specific blob in which you are interested. Pak můžete provádět operace, jako jsou nahrávání, stahování a kopírování.Then you can perform operations such as upload, download, and copy.

Důležité

Názvy kontejnerů musí být malými písmeny.Container names must be lowercase. 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ě.See Naming and Referencing Containers, Blobs, and Metadata for more information about container and blob names.

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é.In this section, you set up an instance of Azure storage client, instantiate the blob service object, create a new container, and set permissions on the container so the blobs are public. Kontejner má název quickstartblobs.The container is called 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 kontejneruUpload blobs to the container

Úložiště objektů blob podporuje objekty blob bloku, doplňovací objekty blob a objekty blob stránky.Blob storage supports block blobs, append blobs, and page blobs. Nejčastěji používané jsou objekty blob bloku, které se používají také v tomto rychlém startu.Block blobs are the most commonly used, and that is what is used in this quickstart.

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.To upload a file to a blob, get the full path of the file by joining the directory name and the file name on your local drive. Pak můžete soubor nahrát do zadané cesty pomocí metody createBlockBlob().You can then upload the file to the specified path using the createBlockBlob() method.

Ukázkový kód vezme místní soubor a nahraje ho do Azure.The sample code takes a local file and uploads it to Azure. Soubor se uloží jako myfile a název objektu blob se v kódu uloží jako fileToUpload.The file is stored as myfile and the name of the blob as fileToUpload in the code. Následující příklad nahraje soubor do kontejneru quickstartblobs.The following example uploads the file to your container called 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().To perform a partial update of the content of a block blob, use the createblocklist() method. 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.Block blobs can be as large as 4.7 TB, and can be anything from Excel spreadsheets to large video files. Objekty blob stránky se používají hlavně pro soubory VHD využívané virtuálními počítači IaaS.Page blobs are primarily used for the VHD files used to back IaaS VMs. Doplňovací objekty blob se používají k protokolování, například když chcete zapisovat do souboru a pak přidávat další informace.Append blobs are used for logging, such as when you want to write to a file and then keep adding more information. Doplňovací objekt blob by se měl používat v modelu s jedním zapisujícím procesem.Append blob should be used in a single writer model. Většina objektů uložených v úložišti objektů blob je objekty blob bloku.Most objects stored in Blob storage are block blobs.

Seznam objektů blob v kontejneruList the blobs in a container

Seznam souborů v kontejneru můžete získat pomocí metody listBlobs().You can get a list of files in the container using the listBlobs() method. 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.The following code retrieves the list of blobs, then loops through them, showing the names of the blobs found in a container.

    $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ů blobGet the content of your blobs

Obsah objektů blob získáte pomocí metody getBlob().Get the contents of your blobs using the getBlob() method. Následující kód zobrazí obsah objektu blob nahraného v předchozí části.The following code displays the contents of the blob uploaded in a previous section.

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

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

Pokud už nepotřebujete objekty blob nahrané v rámci tohoto rychlého startu, můžete celý kontejner odstranit pomocí metody deleteContainer().If you no longer need the blobs uploaded in this quickstart, you can delete the entire container using the deleteContainer() method. Pokud už nepotřebujete vytvořené soubory, pomocí metody deleteBlob() je odstraníte.If the files created are no longer needed, you use the deleteBlob() method to delete the files.

    // 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ů blobResources for developing PHP applications with blobs

Prohlédněte si tyto další zdroje informací o vývoji v PHP s využitím úložiště objektů blob:See these additional resources for PHP development with Blob storage:

Další krokyNext steps

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.In this quickstart, you learned how to transfer files between a local disk and Azure blob storage using PHP. Další informace o práci s PHP najdete v našem Centru pro vývojáře PHP.To learn more about working with PHP, continue to our PHP Developer center.

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.For more information about the Storage Explorer and Blobs, see Manage Azure Blob storage resources with Storage Explorer.