Objektumok továbbítása Azure Blob-tárolókra és -tárolókról a PHP használatával

A rövid útmutató azt ismerteti, hogyan használható a PHP blokkblobok feltöltésére, letöltésére és listázására egy, az Azure Blob Storage-ban található tárolóban.

Előfeltételek

Az Azure Storage eléréséhez Azure-előfizetésre lesz szüksége. Ha még nem rendelkezik előfizetéssel, a kezdés előtt hozzon létre egy ingyenes fiókot .

Az Azure Storage-hoz való hozzáférés egy tárfiókon keresztül történik. Ebben a rövid útmutatóban hozzon létre egy tárfiókot a Azure Portal, a Azure PowerShell vagy az Azure CLI használatával. A tárfiókok létrehozásával kapcsolatban lásd: Tárfiók létrehozása.

Győződjön meg arról, hogy telepítve vannak a következő további előfeltételek:

A mintaalkalmazás letöltése

A rövid útmutatóban használt mintaalkalmazás egy egyszerű PHP-alkalmazás.

A git használatával töltse le az alkalmazás egy példányát a fejlesztői környezetbe.

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

Ez a parancs a helyi git mappába klónozza az adattárat. A PHP mintaalkalmazás megnyitásához keresse meg a storage-blobs-php-quickstart mappát, és nyissa meg a phpqs.php fájlt.

A hitelesítési adatok másolása az Azure Portalról

A mintaalkalmazásnak hitelesítenie kell a tárfiókhoz való hozzáférést. Adja meg a tárfiók hitelesítő adatait az alkalmazásnak egy kapcsolati sztring formájában. A tárfiók hitelesítő adatainak megtekintéséhez a következőt kell tennie:

  1. A Azure Portal lépjen a tárfiókba.

  2. A tárfiók áttekintésének Beállítások szakaszában válassza a Hozzáférési kulcsok lehetőséget a fiók hozzáférési kulcsainak és kapcsolati sztring megjelenítéséhez.

  3. Jegyezze fel tárfiókja nevét, mert a hitelesítésnél szüksége lesz rá.

  4. Keresse meg a Kulcs értéket a key1 alatt, és válassza a Másolás lehetőséget a fiókkulcs másolásához.

    A fiókkulcs Azure Portalról történő másolását bemutató képernyőkép

A tárolási kapcsolati sztring konfigurálása

Az alkalmazásban meg kell adnia a tárfiók nevét és a fiókkulcsot, hogy létrehozhasson egy BlobRestProxy példányt az alkalmazásból. Javasoljuk, hogy ezeket az azonosítókat egy környezeti változóban tárolja az alkalmazást futtató helyi gépen. A környezeti változó létrehozásához kövesse az alábbi példák egyikét az operációs rendszerének megfelelően. A youraccountname és a youraccountkey értékeket cserélje le a fiók nevére, illetve kulcsára.

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

A környezet konfigurálása

Fogja a mappát a helyi git-mappából, és helyezze egy, a PHP-kiszolgáló által kiszolgált címtárba. Ezután nyisson meg egy parancssort, amelynek a hatóköre ugyanaz a címtár, és írja be a következőt: php composer.phar install

Minta futtatása

Ez a minta egy tesztfájlt hoz létre a „.” mappában. A mintaprogram feltölti a tesztfájlt a Blob-tárolóba, listázza a tárolóban található blobokat, majd letölti a fájlt egy új néven.

Futtassa a mintát. Az alábbi kimenet példa az alkalmazás futtatásakor kapott kimenetre:

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!

Amikor lenyomja a megjelenített gombot, a mintaprogram törli a Storage-tárolót és a fájlokat. Mielőtt továbblépne, ellenőrizze a két fájlt a kiszolgálója mappájában. Ha megnyitja őket, láthatja, hogy megegyeznek.

Az Azure Storage Explorert vagy egy ahhoz hasonló eszközt is használhat, ha szeretné a fájlt megtekinteni a blobtárolóban. Az Azure Storage Explorer egy ingyenes, platformfüggetlen eszköz, amellyel elérheti a tárfiókjával kapcsolatos információkat.

A fájlok ellenőrzése után nyomja le bármelyik billentyűt a bemutató befejezéséhez és a tesztfájlok törléséhez. Most, hogy tisztában van a minta működésével, nyissa meg az example.rb fájlt, és tekintse meg a kódot.

A mintakód értelmezése

A következőkben áttekintjük a mintakódot, és értelmezzük, hogyan működik.

Referenciák beszerzése a tárolóobjektumokhoz

Az első teendő a referenciák létrehozása a Blob-tárolóhoz való hozzáféréshez és kezeléséhez használt objektumokhoz. Ezek az objektumok egymásra épülnek, és mindegyiket a listában utánuk következő használja.

  • Hozzon létre egy példányt az Azure Storage BlobRestProxy objektumából a kapcsolati hitelesítő adatok beállításához.
  • Hozza létre a BlobService objektumot, amely a tárfiók Blob szolgáltatására mutat.
  • Hozza létre a Container objektumot. Ez azt a tárolót képviseli, amelyhez Ön hozzáfér. A tárolók a blobok csoportosítására használhatók, hasonlóan ahhoz, ahogyan a számítógépen a mappákkal rendszerezi a fájlokat.

A blobClient tárolóobjektum létrehozása után létrehozhatja a Block blobobjektumot, amely pontosan arra a blobra mutat, amelyre kíváncsi. Ezután elvégezheti a feltöltési, letöltési, másolási vagy egyéb műveleteket.

Fontos

A tárolók nevei csak kisbetűket tartalmazhatnak. A tárolók és blobok elnevezésével kapcsolatos részletekért lásd a tárolók, blobok és metaadatok elnevezésével és hivatkozásával foglalkozó cikket.

Ebben a szakaszban létre fogja hozni az Azure Storage-kliens és a blobszolgáltatás objektumának egy példányát, valamint egy új tárolót, majd beállítja annak engedélyeit úgy, hogy a blobok nyilvánosak legyenek. A tároló neve 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);

Blobok feltöltése a tárolóba

A Blob Storage támogatja a blokkblobokat, a hozzáfűző blobokat és a lapblobokat. A leggyakrabban használt elemek a blokkblobok, és ez a rövid útmutató is ezeket használja.

Ha szeretne feltölteni egy fájlt a blobba, szüksége lesz a fájl teljes útvonalára, amelyet a helyi meghajtón található könyvtárnév és fájlnév összefűzésével kap meg. Ezt követően feltöltheti a fájlt a megadott útvonalra a createblockblob() metódus használatával.

A mintakód egy helyi fájlt tölt fel az Azure-ba. A fájlt a rendszer myfile néven tárolja, a blob pedig fileToUpload néven szerepel a kódban. A következő példa feltölti a fájlt a quickstartblobs nevű tárolóba.

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

Egy blokkblob tartalmának részleges frissítéséhez használja a createblocklist() metódust. A blokkblobok legfeljebb 4,7 TB méretűek lehetnek, és az Excel-munkafüzetektől kezdve a nagyméretű videofájlokig bármit tartalmazhatnak. A lapblobok elsősorban az IaaS virtuális gépek biztonsági mentéséhez szükséges VHD-fájlokhoz használatosak. A hozzáfűző blobok a naplózáshoz használhatók, például amikor egy fájlba szeretne írni, majd folyamatosan újabb információkat szeretne hozzáadni. A hozzáfűző blobokat egyetlen írót tartalmazó modellek esetében érdemes használni. A blobtárolókban tárolt objektumok a legtöbb esetben blokkblobok.

Tárolóban lévő blobok kilistázása

A tárolóban található fájlok listáját a listblobs() metódus használatával kérheti le. A következő kód lekéri a blobok listáját, majd végighalad rajtuk, és megjeleníti a tárolóban talált blobok nevét.

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

Blobok tartalmának lekérése

A blobok tartalmát a getBlob() metódus segítségével kérheti le. A következő kód megjeleníti a korábbi szakaszban feltöltött blob tartalmát.

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

Az erőforrások eltávolítása

Ha már nincs szüksége az ebben a rövid útmutatóban feltöltött blobokra, a teljes tárolót törölheti a deletecontainer() metódussal. Ha már nincs szüksége a létrehozott fájlokra, a deleteblob() metódus használatával törölheti őket.

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

Blobokkal rendelkező PHP-alkalmazások fejlesztéséhez használható forrásanyagok

Blob Storage-tárolókat alkalmazó PHP-alkalmazások fejlesztéséhez tekintse át az alábbi további forrásanyagokat is:

Következő lépések

Ennek a rövid útmutatónak a segítségével megtanulta, hogyan vihetők át fájlok egy helyi lemez és az Azure Blob Storage között a PHP használatával. Ha bővebb információra van szüksége a PHP használatával kapcsolatban, lépjen tovább a PHP fejlesztői központunkba.

További információk a Storage Explorerről és a blobokról: Azure Blob Storage-erőforrások kezelése a Storage Explorer használatával.