Transferowanie obiektów do i z usługi Azure Blob Storage za pomocą języka PHP

Dzięki tej skróconej instrukcji dowiesz się, w jaki sposób za pomocą języka PHP przekazywać, pobierać i wyświetlać listę blokowych obiektów blob w kontenerze usługi Azure Blob Storage.

Wymagania wstępne

Aby uzyskać dostęp do usługi Azure Storage, potrzebujesz subskrypcji platformy Azure. Jeśli nie masz jeszcze subskrypcji, przed rozpoczęciem utwórz bezpłatne konto .

Cały dostęp do usługi Azure Storage odbywa się za pośrednictwem konta magazynu. Na potrzeby tego samouczka Szybki start utwórz konto magazynu przy użyciu witryny Azure Portal, programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Aby uzyskać pomoc dotyczącą tworzenia konta magazynu, zobacz Tworzenie konta magazynu.

Upewnij się, że masz zainstalowane następujące dodatkowe elementy wymagane wstępnie:

Pobieranie przykładowej aplikacji

Przykładowa aplikacja używana w tym przewodniku Szybki start to podstawowa aplikacja w języku PHP.

Użyj narzędzia git, aby pobrać kopię tej aplikacji do swojego środowiska projektowego.

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

To polecenie klonuje repozytorium do lokalnego folderu git. Aby otworzyć przykładową aplikację w języku PHP, wyszukaj folder storage-blobs-php-quickstart, a następnie otwórz plik phpqs.php.

Kopiowanie poświadczeń z witryny Azure Portal

Aplikacja przykładowa musi autoryzować dostęp do konta magazynu. Podaj aplikacji swoje poświadczenia konta magazynu w postaci parametrów połączenia. Aby wyświetlić swoje poświadczenia konta magazynu:

  1. W Azure Portal przejdź do konta magazynu.

  2. W sekcji Ustawienia przeglądu konta magazynu wybierz pozycję Klucze dostępu , aby wyświetlić klucze dostępu do konta i parametry połączenia.

  3. Zanotuj nazwę konta magazynu, która będzie potrzebna w celu autoryzacji.

  4. Znajdź wartość Klucz w obszarze key1 i wybierz pozycję Kopiuj , aby skopiować klucz konta.

    Zrzut ekranu przedstawiający sposób kopiowania klucza konta z witryny Azure Portal

Konfigurowanie parametrów połączenia magazynu

W aplikacji należy podać nazwę konta magazynu i klucz konta, aby utworzyć wystąpienie obiektu BlobRestProxy na potrzeby aplikacji. Zaleca się do przechowywanie tych identyfikatorów w zmiennej środowiskowej na maszynie lokalnej, na której uruchomiona jest aplikacja. Użyj jednego z poniższych przykładów w zależności od używanego systemu operacyjnego, aby utworzyć zmienną środowiskową. Zastąp wartości youraccountname i youraccountkey własną nazwą konta i własnym kluczem.

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

Konfigurowanie środowiska

Umieść lokalny folder git w katalogu udostępnionym przez serwer PHP. Następnie w tym samym katalogu otwórz wiersz polecenia i wprowadź: php composer.phar install

Uruchamianie aplikacji przykładowej

Ta aplikacja przykładowa tworzy plik testowy w folderze „.”. Aplikacja przykładowa przesyła plik testowy do usługi Blob Storage, wyświetla listę obiektów blob w kontenerze i pobiera plik z nową nazwą.

Uruchom przykład. Poniższej przedstawiono przykładowe dane wyjściowe zwracane po uruchomieniu aplikacji:

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!

Po naciśnięciu wyświetlonego przycisku aplikacja przykładowa usunie kontener magazynu i pliki. Przed kontynuowaniem sprawdź, czy w folderze na serwerze znajdują się te dwa pliki. Możesz je otworzyć i sprawdzić, czy są identyczne.

Możesz również wyświetlić pliki w usłudze Blob Storage za pomocą narzędzia takiego jak Eksplorator usługi Azure Storage. Eksplorator usługi Azure Storage to darmowe narzędzie międzyplatformowe, które umożliwia dostęp do informacji na koncie magazynu.

Po zweryfikowaniu plików naciśnij dowolny klawisz, aby zakończyć demonstrację i usunąć pliki testowe. Teraz, gdy wiesz już, jak działa aplikacja przykładowa, otwórz plik example.rb i przyjrzyj się kodowi.

Omówienie przykładowego kodu

W kolejnej części omówimy przykładowy kod, aby wyjaśnić, w jaki sposób działa.

Pobieranie odwołań do obiektów magazynu

Najpierw należy utworzyć odwołania do obiektów używane w celu uzyskania dostępu do usługi Blob Storage i zarządzania nią. Te obiekty są powiązane i każdy obiekt jest używany przez kolejny na liście.

  • Utwórz wystąpienie obiektu BlobRestProxy usługi Azure Storage, aby skonfigurować poświadczenia połączenia.
  • Utwórz obiekt BlobService, który wskazuje usługę Blob w ramach konta magazynu.
  • Utwórz obiekt Container reprezentujący kontener, do którego uzyskujesz dostęp. Kontenery są używane do porządkowania obiektów blob w ten sam sposób, w jaki foldery na komputerze są używane do porządkowania plików.

Gdy istnieje już obiekt kontenera blobClient, możesz utworzyć obiekt blob Block wskazujący konkretny obiekt blob, który Cię interesuje. Następnie możesz wykonać operacje, takie jak przekazywanie, pobieranie i kopiowanie.

Ważne

Nazwy kontenerów muszą być zapisane małymi literami. Aby uzyskać dodatkowe informacje o regułach nazewnictwa kontenerów i obiektów blob, zobacz Nazewnictwo i odwoływanie się do kontenerów, obiektów blob i metadanych.

Ta sekcja poświęcona jest konfigurowaniu wystąpienia klienta usługi Azure Storage, tworzeniu wystąpienia obiektu usługi Blob, tworzeniu nowego kontenera i ustawianiu uprawnień w kontenerze, aby obiekty blob były publiczne. Kontener nazywa się 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);

Przekazywanie obiektów blob do kontenera

Usługa Blob Storage obsługuje blokowe, uzupełnialne i stronicowe obiekty blob. Blokowe obiekty blob są używane najczęściej i dlatego zostały użyte w tym przewodniku Szybki start.

Aby przekazać plik do obiektu blob, uzyskaj pełną ścieżkę pliku, łącząc nazwę katalogu i nazwę pliku na dysku lokalnym. Następnie możesz przekazać plik do określonej ścieżki przy użyciu metody createBlockBlob().

Przykładowy kod pobiera lokalny plik i przekazuje go do platformy Azure. W tym kodzie plik jest przechowywany pod nazwą myfile, a nazwa obiektu blob to fileToUpload. Następujący kod przykładowy przekazuje plik do kontenera o nazwie 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);

Aby wykonać częściową aktualizację zawartości blokowego obiektu blob, użyj metody createblocklist(). Blokowe obiekty blob mogą mieć rozmiar nawet do 4,7 TB i mogą to być dowolne pliki, od arkuszy kalkulacyjnych programu Excel po duże pliki wideo. Stronicowe obiekty blob są używane głównie do tworzenia plików VHD służących do obsługi maszyn wirtualnych IaaS. Uzupełnialne obiekty blob są używane do rejestrowania, na przykład w sytuacji, w której konieczny jest zapis do pliku, a następnie dodawanie kolejnych informacji. Uzupełnianego obiektu blob należy używać w ramach pojedynczego modelu zapisywania. Większość obiektów przechowywanych w usłudze Blob Storage to blokowe obiekty blob.

Wyświetlanie listy obiektów blob w kontenerze

Pobierz listę plików w kontenerze, używając metody listBlobs(). Poniższy kod umożliwia pobranie listy obiektów blob, a następnie przetwarza je w pętli, wyświetlając nazwy obiektów blob odnalezionych w kontenerze.

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

Pobieranie zawartości obiektów blob

Metoda getBlob() umożliwia pobranie zawartości obiektów blob. Poniższy kod pozwala wyświetlić zawartość obiektu blob przekazanego w poprzedniej sekcji.

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

Czyszczenie zasobów

Jeśli nie potrzebujesz już obiektów blob przekazanych podczas pracy z tym przewodnikiem Szybki start, możesz usunąć cały kontener, korzystając z metody deleteContainer(). Jeśli utworzone pliki nie są już potrzebne, możesz użyć metody deleteBlob(), aby je usunąć.

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

Zasoby używane do tworzenia aplikacji PHP z obiektami blob

Zobacz dodatkowe zasoby używane podczas tworzenia aplikacji PHP z magazynem obiektów blob:

Następne kroki

W tym przewodniku Szybki start przedstawiono metodę transferowania plików między dyskiem lokalnym i usługą Azure Blob Storage przy użyciu języka PHP. Aby dowiedzieć się więcej o pracy z językiem PHP, przejdź do naszego Centrum deweloperów języka PHP.

Aby uzyskać więcej informacji na temat Eksploratora usługi Storage i obiektów blob, zapoznaj się artykułem Manage Azure Blob storage resources with Storage Explorer (Zarządzanie zasobami usługi Azure Blob Storage za pomocą Eksploratora usługi Storage).