Transferowanie obiektów do i z usługi Azure Blob Storage za pomocą języka PHPTransfer objects to/from Azure Blob storage using 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.In this quickstart, you learn how to use PHP to upload, download, and list block blobs in a container in Azure Blob storage.

Wymagania wstępnePrerequisites

Aby uzyskać dostęp do usługi Azure Storage, potrzebujesz subskrypcji platformy Azure.To access Azure Storage, you'll need an Azure subscription. Jeśli nie masz jeszcze subskrypcji, przed rozpoczęciem Utwórz bezpłatne konto .If you don't already have a subscription, create a free account before you begin.

Cały dostęp do usługi Azure Storage odbywa się za pośrednictwem konta magazynu.All access to Azure Storage takes place through a storage account. 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.For this quickstart, create a storage account using the Azure portal, Azure PowerShell, or Azure CLI. Aby uzyskać pomoc dotyczącą tworzenia konta magazynu, zobacz Tworzenie konta magazynu.For help creating a storage account, see Create a storage account.

Upewnij się, że masz zainstalowane następujące dodatkowe elementy wymagane wstępnie:Make sure you have the following additional prerequisites installed:

Pobieranie przykładowej aplikacjiDownload the sample application

Przykładowa aplikacja używana w tym przewodniku Szybki start to podstawowa aplikacja w języku PHP.The sample application used in this quickstart is a basic PHP application.

Użyj narzędzia git, aby pobrać kopię tej aplikacji do swojego środowiska projektowego.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

To polecenie klonuje repozytorium do lokalnego folderu git.This command clones the repository to your local git folder. Aby otworzyć przykładową aplikację w języku PHP, wyszukaj folder storage-blobs-php-quickstart, a następnie otwórz plik phpqs.php.To open the PHP sample application, look for the storage-blobs-php-quickstart folder, and open the phpqs.php file.

Kopiowanie poświadczeń z witryny Azure PortalCopy your credentials from the Azure portal

Aplikacja przykładowa musi autoryzować dostęp do konta magazynu.The sample application needs to authorize access to your storage account. Podaj aplikacji swoje poświadczenia konta magazynu w postaci parametrów połączenia.Provide your storage account credentials to the application in the form of a connection string. Aby wyświetlić swoje poświadczenia konta magazynu:To view your storage account credentials:

  1. W Azure Portal przejdź do konta magazynu.In to the Azure portal go to your storage account.

  2. W sekcji Ustawienia w obszarze przegląd konta magazynu wybierz pozycję klucze dostępu , aby wyświetlić klucze dostępu do konta i parametry połączenia.In the Settings section of the storage account overview, select Access keys to display your account access keys and connection string.

  3. Zanotuj nazwę konta magazynu, która będzie potrzebna w celu autoryzacji.Note the name of your storage account, which you'll need for authorization.

  4. Znajdź wartość klucza w obszarze Klucz1, a następnie wybierz pozycję Kopiuj , aby skopiować klucz konta.Find the Key value under key1, and select Copy to copy the account key.

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

Konfigurowanie parametrów połączenia magazynuConfigure your storage connection string

W aplikacji należy podać nazwę konta magazynu i klucz konta, aby utworzyć wystąpienie obiektu BlobRestProxy na potrzeby aplikacji.In the application, you must provide your storage account name and account key to create the BlobRestProxy instance for your application. Zaleca się do przechowywanie tych identyfikatorów w zmiennej środowiskowej na maszynie lokalnej, na której uruchomiona jest aplikacja.It is recommended to store these identifiers within an environment variable on the local machine running the application. Użyj jednego z poniższych przykładów w zależności od używanego systemu operacyjnego, aby utworzyć zmienną środowiskową.Use one of the following examples depending on your Operating System to create the environment variable. Zastąp wartości youraccountname i youraccountkey własną nazwą konta i własnym kluczem.Replace the youraccountname and youraccountkey values with your account name and key.

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

Konfigurowanie środowiskaConfigure your environment

Umieść lokalny folder git w katalogu udostępnionym przez serwer PHP.Take the folder from your local git folder and place it in a directory served by your PHP server. Następnie w tym samym katalogu otwórz wiersz polecenia i wprowadź: php composer.phar installThen, open a command prompt scoped to that same directory and enter: php composer.phar install

Uruchamianie aplikacji przykładowejRun the sample

Ta aplikacja przykładowa tworzy plik testowy w folderze „.”.This sample creates a test file in the '.' folder. 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ą.The sample program uploads the test file to Blob storage, lists the blobs in the container, and downloads the file with a new name.

Uruchom przykład.Run the sample. Poniższej przedstawiono przykładowe dane wyjściowe zwracane po uruchomieniu aplikacji: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!

Po naciśnięciu wyświetlonego przycisku aplikacja przykładowa usunie kontener magazynu i pliki.When you press the button displayed, the sample program deletes the storage container and the files. Przed kontynuowaniem sprawdź, czy w folderze na serwerze znajdują się te dwa pliki.Before you continue, check your server's folder for the two files. Możesz je otworzyć i sprawdzić, czy są identyczne.You can open them and see they are identical.

Możesz również wyświetlić pliki w usłudze Blob Storage za pomocą narzędzia takiego jak Eksplorator usługi Azure Storage.You can also use a tool such as the Azure Storage Explorer to view the files in Blob storage. Eksplorator usługi Azure Storage to darmowe narzędzie międzyplatformowe, które umożliwia dostęp do informacji na koncie magazynu.Azure Storage Explorer is a free cross-platform tool that allows you to access your storage account information.

Po zweryfikowaniu plików naciśnij dowolny klawisz, aby zakończyć demonstrację i usunąć pliki testowe.After you've verified the files, hit any key to finish the demo and delete the test files. Teraz, gdy wiesz już, jak działa aplikacja przykładowa, otwórz plik example.rb i przyjrzyj się kodowi.Now that you know what the sample does, open the example.rb file to look at the code.

Omówienie przykładowego koduUnderstand the sample code

W kolejnej części omówimy przykładowy kod, aby wyjaśnić, w jaki sposób działa.Next, we walk through the sample code so that you can understand how it works.

Pobieranie odwołań do obiektów magazynuGet references to the storage objects

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ą.The first thing to do is create the references to the objects used to access and manage Blob storage. Te obiekty są powiązane i każdy obiekt jest używany przez kolejny na liście.These objects build on each other, and each is used by the next one in the list.

  • Utwórz wystąpienie obiektu BlobRestProxy usługi Azure Storage, aby skonfigurować poświadczenia połączenia.Create an instance of the Azure storage BlobRestProxy object to set up connection credentials.
  • Utwórz obiekt BlobService, który wskazuje usługę Blob w ramach konta magazynu.Create the BlobService object that points to the Blob service in your storage account.
  • Utwórz obiekt Container reprezentujący kontener, do którego uzyskujesz dostęp.Create the Container object, which represents the container you are accessing. 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.Containers are used to organize your blobs like you use folders on your computer to organize your files.

Gdy istnieje już obiekt kontenera blobClient, możesz utworzyć obiekt blob Block wskazujący konkretny obiekt blob, który Cię interesuje.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. Następnie możesz wykonać operacje, takie jak przekazywanie, pobieranie i kopiowanie.Then you can perform operations such as upload, download, and copy.

Ważne

Nazwy kontenerów muszą być zapisane małymi literami.Container names must be lowercase. 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.See Naming and Referencing Containers, Blobs, and Metadata for more information about container and blob names.

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.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. Kontener nazywa się 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);

Przekazywanie obiektów blob do konteneraUpload blobs to the container

Usługa Blob Storage obsługuje blokowe, uzupełnialne i stronicowe obiekty blob.Blob storage supports block blobs, append blobs, and page blobs. Blokowe obiekty blob są używane najczęściej i dlatego zostały użyte w tym przewodniku Szybki start.Block blobs are the most commonly used, and that is what is used in this quickstart.

Aby przekazać plik do obiektu blob, uzyskaj pełną ścieżkę pliku, łącząc nazwę katalogu i nazwę pliku na dysku lokalnym.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. Następnie możesz przekazać plik do określonej ścieżki przy użyciu metody createBlockBlob().You can then upload the file to the specified path using the createBlockBlob() method.

Przykładowy kod pobiera lokalny plik i przekazuje go do platformy Azure.The sample code takes a local file and uploads it to Azure. W tym kodzie plik jest przechowywany pod nazwą myfile, a nazwa obiektu blob to fileToUpload.The file is stored as myfile and the name of the blob as fileToUpload in the code. Następujący kod przykładowy przekazuje plik do kontenera o nazwie 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);

Aby wykonać częściową aktualizację zawartości blokowego obiektu blob, użyj metody createblocklist().To perform a partial update of the content of a block blob, use the createblocklist() method. 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.Block blobs can be as large as 4.7 TB, and can be anything from Excel spreadsheets to large video files. Stronicowe obiekty blob są używane głównie do tworzenia plików VHD służących do obsługi maszyn wirtualnych IaaS.Page blobs are primarily used for the VHD files used to back IaaS VMs. 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.Append blobs are used for logging, such as when you want to write to a file and then keep adding more information. Uzupełnianego obiektu blob należy używać w ramach pojedynczego modelu zapisywania.Append blob should be used in a single writer model. Większość obiektów przechowywanych w usłudze Blob Storage to blokowe obiekty blob.Most objects stored in Blob storage are block blobs.

Wyświetlanie listy obiektów blob w kontenerzeList the blobs in a container

Pobierz listę plików w kontenerze, używając metody listBlobs().You can get a list of files in the container using the listBlobs() method. 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.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());

Pobieranie zawartości obiektów blobGet the content of your blobs

Metoda getBlob() umożliwia pobranie zawartości obiektów blob.Get the contents of your blobs using the getBlob() method. Poniższy kod pozwala wyświetlić zawartość obiektu blob przekazanego w poprzedniej sekcji.The following code displays the contents of the blob uploaded in a previous section.

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

Czyszczenie zasobówClean up resources

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().If you no longer need the blobs uploaded in this quickstart, you can delete the entire container using the deleteContainer() method. Jeśli utworzone pliki nie są już potrzebne, możesz użyć metody deleteBlob(), aby je usunąć.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);   

Zasoby używane do tworzenia aplikacji PHP z obiektami blobResources for developing PHP applications with blobs

Zobacz dodatkowe zasoby używane podczas tworzenia aplikacji PHP z magazynem obiektów blob:See these additional resources for PHP development with Blob storage:

Następne krokiNext steps

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.In this quickstart, you learned how to transfer files between a local disk and Azure blob storage using PHP. Aby dowiedzieć się więcej o pracy z językiem PHP, przejdź do naszego Centrum deweloperów języka PHP.To learn more about working with PHP, continue to our PHP Developer center.

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