Dela via


Överföra objekt till/från Azure Blob Storage med PHP

I den här snabbstarten lär du dig hur du använder PHP för att ladda upp, ladda ned och lista blockblobar i en container i Azure Blob Storage.

Förutsättningar

Du behöver en Azure-prenumeration för att få åtkomst till Azure Storage. Om du inte redan har en prenumeration skapar du ett kostnadsfritt konto innan du börjar.

All åtkomst till Azure Storage sker via ett lagringskonto. För den här snabbstarten skapar du ett lagringskonto med hjälp av Azure-portalen, Azure PowerShell eller Azure CLI. Hjälp med att skapa ett lagringskonto finns i Skapa ett lagringskonto.

Kontrollera att du har följande ytterligare krav installerade:

Hämta exempelprogrammet

Exempelprogrammet som används i den här snabbstarten är ett grundläggande PHP-program.

Använd git för att ladda ned en kopia av programmet till utvecklingsmiljön.

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

Det här kommandot klonar lagret till den lokala git-mappen. Om du vill öppna PHP-exempelprogrammet letar du efter mappen storage-blobs-php-quickstart och öppnar filen phpqs.php.

Kopiera dina autentiseringsuppgifter från Azure-portalen

Exempelprogrammet måste auktorisera åtkomst till ditt lagringskonto. Ange dina autentiseringsuppgifter för lagringskontot till programmet i form av en anslutningssträng. Så här visar du dina autentiseringsuppgifter för lagringskontot:

  1. Gå till Azure-portalen och navigera till ditt lagringskonto.

  2. I avsnittet Inställningar i lagringskontots översikt väljer du Åtkomstnycklar för att visa dina kontoåtkomstnycklar och anslutningssträng.

  3. Observera namnet på ditt lagringskonto, som du behöver för auktorisering.

  4. Hitta värdet Nyckel under key1, och välj Kopiera för att kopiera kontonyckeln.

    Skärmbild som visar hur du kopierar din kontonyckel från Azure-portalen

Konfigurera anslutningssträngen för lagring

I programmet måste du ange ditt lagringskontonamn och din kontonyckel för att skapa BlobRestProxy-instansen för ditt program. Vi rekommenderar att du lagrar dessa identifierare i en miljövariabel på den lokala dator som kör programmet. Använd något av följande exempel beroende på ditt operativsystem för att skapa miljövariabeln. Ersätt värdena youraccountname och youraccountkey med ditt kontonamn och din nyckel.

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

Konfigurera din miljö

Ta mappen från din lokala git-mapp och placera den i en katalog som hanteras av PHP-servern. Öppna sedan en kommandotolk som är begränsad till samma katalog och ange: php composer.phar install

Kör exempelprogrammet

Det här exemplet skapar en testfil i mappen .. Exempelprogrammet laddar upp testfilen till Blob Storage, listar blobarna i containern och laddar ned filen med ett nytt namn.

Kör exemplet. Följande utdata är ett exempel på utdata som returneras när programmet körs:

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!

När du trycker på knappen som visas tar exempelprogrammet bort lagringscontainern och filerna. Innan du fortsätter kontrollerar du serverns mapp för de två filerna. Du kan öppna dem och se att de är identiska.

Du kan också använda ett verktyg som Azure Storage Explorer för att visa filerna i blobblagringen. Azure Storage Explorer är ett kostnadsfritt verktyg för flera plattformar som gör det möjligt att komma åt information på lagringskontot.

När du har verifierat filerna trycker du på valfri nyckel för att slutföra demonstrationen och ta bort testfilerna. Nu när du vet vad exemplet gör öppnar du filen example.rb för att titta på koden.

Förstå exempelkoden

Sedan går vi igenom exempelkoden så att du kan förstå hur den fungerar.

Hämta referenser till lagringsobjekten

Det första du behöver göra är att skapa referenser till de objekt som används för att komma åt och hantera Blob Storage. Dessa objekt bygger på varandra, och var och en används av nästa objekt i listan.

  • Skapa en instans av Azure Storage BlobRestProxy-objektet för att konfigurera autentiseringsuppgifter för anslutningen.
  • Skapa BlobService-objektet som pekar på blobtjänsten i ditt lagringskonto.
  • Skapa containerobjektet , som representerar den container som du kommer åt. Containrar används för att organisera dina blobar på samma sätt som du använder mappar på datorn för att organisera dina filer.

När du har blobClient-containerobjektet kan du skapa blockblobobjektet som pekar på den specifika blob som du är intresserad av. Sedan kan du utföra åtgärder som att ladda upp, ladda ned och kopiera.

Viktigt!

Containernamn måste vara med små bokstäver. Se namngivning och referens av containrar, blobar och metadata för mer information om container- och blobnamn.

I det här avsnittet konfigurerar du en instans av Azure Storage-klienten, instansierar blobtjänstobjektet, skapar en ny container och anger behörigheter för containern så att blobarna blir offentliga. Containern kallas 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);

Ladda upp blobar i containern

Blob Storage stöder blockblobar, tilläggsblobar och sidblobar. Blockblobar är de vanligaste och det är det som används i den här snabbstarten.

För att ladda upp en fil till en blob ska du skapa filens fullständiga sökväg genom att kombinera mappnamnet och filnamnet på din lokala hårddisk. Du kan sedan ladda upp filen till den angivna sökvägen med hjälp av metoden createBlockBlob().

Exempelkoden tar en lokal fil och laddar upp den till Azure. Filen lagras som myfile och namnet på bloben som fileToUpload i koden. I följande exempel laddas filen upp till containern med namnet 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);

Om du vill utföra en partiell uppdatering av innehållet i en blockblob använder du metoden createblocklist(). Blockblobar kan vara så stora som 4,7 TB och kan vara allt från Excel-kalkylblad till stora videofiler. Sidblobar används främst för de VHD-filer som används för att stödja virtuella IaaS-datorer. Tilläggsblobar används för loggning, till exempel när du vill skriva till en fil och sedan fortsätta att lägga till mer information. Tilläggsblob ska användas i en enskild skrivmodell. De flesta objekt som lagras i Blob Storage är blockblobar.

Lista blobar i en behållare

Du kan hämta en lista över filer i containern med hjälp av metoden listBlobs(). Följande kod hämtar listan över blobar och loopar sedan igenom dem och visar namnen på blobarna som finns i en 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());

Hämta innehållet i dina blobar

Hämta innehållet i dina blobar med metoden getBlob(). Följande kod visar innehållet i den blob som laddades upp i ett tidigare avsnitt.

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

Rensa resurser

Om du inte längre behöver de blobar som laddas upp i den här snabbstarten kan du ta bort hela containern med metoden deleteContainer(). Om de filer som skapats inte längre behövs använder du metoden deleteBlob() för att ta bort filerna.

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

Resurser för att utveckla PHP-program med blobar

Se dessa ytterligare resurser för PHP-utveckling med Blob Storage:

Nästa steg

I den här snabbstarten har du lärt dig hur du överför filer mellan en lokal disk och Azure Blob Storage med PHP. Om du vill veta mer om hur du arbetar med PHP fortsätter du till vårt PHP Developer Center.

Mer information om Storage Explorer och blobar finns i Hantera Azure Blob Storage-resurser med Storage Explorer.