Freigeben über


Übertragen von Objekten in/von Azure Blob Storage mithilfe von PHP

In dieser Schnellstartanleitung erfahren Sie, wie Sie PHP zum Hochladen, Herunterladen und Auflisten von Blobs in einem Container in Azure Blob Storage verwenden.

Voraussetzungen

Sie benötigen ein Azure-Abonnement, um auf Azure Storage zuzugreifen. Wenn Sie noch kein Abonnement haben, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Der gesamte Zugriff auf Azure Storage erfolgt über ein Speicherkonto. Für diesen Schnellstart erstellen Sie über das Azure-Portal mithilfe von Azure PowerShell oder über die Azure-Befehlszeilenschnittstelle ein Speicherkonto. Hilfe bei der Speicherkontoerstellung finden Sie unter Erstellen eines Speicherkontos.

Stellen Sie sicher, dass die folgenden zusätzlichen Voraussetzungen installiert sind:

Herunterladen der Beispielanwendung

Die beispielanwendung , die in dieser Schnellstartanleitung verwendet wird, ist eine einfache PHP-Anwendung.

Verwenden Sie Git, um eine Kopie der Anwendung in Ihre Entwicklungsumgebung herunterzuladen.

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

Mit diesem Befehl wird das Repository in Ihren lokalen Git-Ordner geklont. Um die PHP-Beispielanwendung zu öffnen, suchen Sie nach dem Ordner "storage-blobs-php-quickstart", und öffnen Sie die phpqs.php Datei.

Kopieren Ihrer Anmeldeinformationen aus dem Azure-Portal

Die Beispielanwendung muss den Zugriff auf Ihr Speicherkonto autorisieren. Geben Sie der Anwendung Anmeldeinformationen für Ihr Speicherkonto in Form einer Verbindungszeichenfolge an. So können Sie die Anmeldedaten Ihres Speicherkontos ansehen:

  1. Gehen Sie im Azure-Portal zu Ihrem Speicherkonto.

  2. Wählen Sie im Abschnitt Einstellungen der Übersicht des Speicherkontos Zugriffsschlüssel aus, um Ihre Kontozugriffsschlüssel und die Verbindungszeichenfolge anzuzeigen.

  3. Notieren Sie sich den Namen Ihres Speicherkontos, das Sie für die Autorisierung benötigen.

  4. Suchen Sie den Wert von Schlüssel unter Schlüssel1, und wählen Sie Kopieren aus, um den Kontoschlüssel zu kopieren.

    Screenshot, der zeigt, wie Sie Ihren Kontoschlüssel aus dem Azure-Portal kopieren

Konfigurieren Sie Ihre Speicherverbindungszeichenfolge.

In der Anwendung müssen Sie Ihren Speicherkontonamen und Kontoschlüssel angeben, um die BlobRestProxy-Instanz für Ihre Anwendung zu erstellen. Es wird empfohlen, diese Bezeichner in einer Umgebungsvariable auf dem lokalen Computer zu speichern, auf dem die Anwendung ausgeführt wird. Verwenden Sie je nach Betriebssystem eines der folgenden Beispiele, um die Umgebungsvariable zu erstellen. Ersetzen Sie die Werte "Youraccountname " und "Youraccountkey " durch ihren Kontonamen und den Schlüssel.

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

Ihre Umgebung konfigurieren

Nehmen Sie den Ordner aus Ihrem lokalen Git-Ordner, und platzieren Sie ihn in einem Verzeichnis, das von Ihrem PHP-Server bereitgestellt wird. Öffnen Sie dann eine Eingabeaufforderung, die auf dasselbe Verzeichnis festgelegt ist, und geben Sie Folgendes ein: php composer.phar install

Beispiel ausführen

In diesem Beispiel wird eine Testdatei im Ordner "." erstellt. Das Beispielprogramm lädt die Testdatei in Blob Storage hoch, listet die Blobs im Container auf und lädt die Datei mit einem neuen Namen herunter.

Führen Sie das Beispiel aus. Die folgende Ausgabe ist ein Beispiel für die Ausgabe, die beim Ausführen der Anwendung zurückgegeben wird:

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!

Wenn Sie auf die angezeigte Schaltfläche klicken, löscht das Beispielprogramm den Speichercontainer und die Dateien. Bevor Sie fortfahren, überprüfen Sie den Ordner Ihres Servers auf die beiden Dateien. Sie können sie öffnen und sehen, dass sie identisch sind.

Sie können zum Anzeigen der Dateien in Blob Storage auch ein Tool, z.B. den Azure Storage-Explorer, verwenden. Der Azure Storage-Explorer ist ein kostenloses plattformübergreifendes Tool, das Ihnen den Zugriff auf die Speicherkontoinformationen ermöglicht.

Nachdem Sie die Dateien überprüft haben, drücken Sie einen beliebigen Schlüssel, um die Demo abzuschließen und die Testdateien zu löschen. Nachdem Sie nun wissen, was das Beispiel tut, öffnen Sie die Datei example.rb, um den Code zu betrachten.

Den Beispielcode verstehen

Als Nächstes werden wir durch den Beispielcode geführt, damit Sie verstehen können, wie es funktioniert.

Abrufen von Verweisen auf die Speicherobjekte

Als Erstes erstellen Sie die Verweise auf die Objekte, die für den Zugriff auf und die Verwaltung von BLOB-Speicher verwendet werden. Diese Objekte bauen aufeinander auf, und jedes wird von der nächsten in der Liste verwendet.

  • Erstellen Sie eine Instanz des Azure Storage BlobRestProxy-Objekts , um Verbindungsanmeldeinformationen einzurichten.
  • Erstellen Sie das BlobService-Objekt , das auf den Blob-Dienst in Ihrem Speicherkonto verweist.
  • Erstellen Sie das Containerobjekt , das den Container darstellt, auf den Sie zugreifen. Container werden verwendet, um Ihre Blobs zu organisieren, so wie Sie Ordner auf Ihrem Computer verwenden, um Ihre Dateien zu organisieren.

Sobald Sie über das blobClient-Containerobjekt verfügen, können Sie das Block-BLOB-Objekt erstellen, das auf den spezifischen Blob verweist, an dem Sie interessiert sind. Anschließend können Sie Vorgänge wie Hochladen, Herunterladen und Kopieren ausführen.

Von großer Bedeutung

Die Containernamen müssen klein geschrieben werden. Weitere Informationen zu Container- und Blobnamen finden Sie unter "Benennen und Verweisen auf Container", "Blobs" und "Metadaten ".

In diesem Abschnitt richten Sie eine Instanz des Azure Storage-Clients ein, instanziieren das BLOB-Dienstobjekt, erstellen einen neuen Container und legen Berechtigungen für den Container fest, sodass die Blobs öffentlich sind. Der Container wird als Schnellstartblobs bezeichnet.

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

Laden Sie Blobs in den Container hoch.

Der Blobspeicher unterstützt "Blockblobs", "Anfügblobs" und "Seitenblobs". Blockblobs sind die am häufigsten verwendeten und in dieser Schnellstartanleitung verwendeten.

Um eine Datei in ein BLOB hochzuladen, rufen Sie den vollständigen Pfad der Datei ab, indem Sie den Verzeichnisnamen und den Dateinamen auf Ihrem lokalen Laufwerk hinzufügen. Sie können die Datei dann mithilfe der createBlockBlob()- Methode in den angegebenen Pfad hochladen.

Der Beispielcode akzeptiert eine lokale Datei und lädt sie in Azure hoch. Die Datei wird als myfile und der Name des Blobs als fileToUpload im Code gespeichert. Im folgenden Beispiel wird die Datei in Ihren Container hochgeladen, der als Schnellstartblobs bezeichnet wird.

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

Verwenden Sie zum Durchführen einer teilweisen Aktualisierung des Inhalts eines Block-BLOB die createblocklist() -Methode. Block-Blobs können bis zu 4,7 TB groß sein und können alles von Excel-Tabellen in große Videodateien sein. Seitenblobs werden in erster Linie für die VHD-Dateien verwendet, die zum Sichern von IaaS-VMs verwendet werden. Anfügeblobs werden für die Protokollierung verwendet, beispielsweise wenn Sie in eine Datei schreiben und dann fortlaufend weitere Informationen hinzufügen möchten. Der Append Blob sollte in einem Einzelschreiber-Modell verwendet werden. Die meisten objekte, die im BLOB-Speicher gespeichert sind, sind Blockblobs.

Liste die Blobs in einem Container auf

Sie können eine Liste von Dateien im Container mithilfe der listBlobs()- Methode abrufen. Der folgende Code ruft die Liste der Blobs ab und durchläuft sie dann, wobei die Namen der blobs angezeigt werden, die in einem Container gefunden wurden.

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

Abrufen des Inhalts Ihrer Blobs

Rufen Sie den Inhalt Ihrer Blobs mithilfe der getBlob()- Methode ab. Der folgende Code zeigt den Inhalt des blobs an, der in einem vorherigen Abschnitt hochgeladen wurde.

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

Bereinigen von Ressourcen

Wenn Sie die in dieser Schnellstartanleitung hochgeladenen BLOBs nicht mehr benötigen, können Sie den gesamten Container mithilfe der deleteContainer()- Methode löschen. Wenn die erstellten Dateien nicht mehr benötigt werden, verwenden Sie die deleteBlob() -Methode, um die Dateien zu löschen.

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

Ressourcen für die Entwicklung von PHP-Anwendungen mit Blobs

Lesen Sie die folgenden zusätzlichen Ressourcen für die PHP-Entwicklung mit Blob Storage:

Nächste Schritte

In dieser Schnellstartanleitung haben Sie erfahren, wie Sie Dateien zwischen einem lokalen Datenträger und Azure Blob Storage mithilfe von PHP übertragen. Um mehr über die Arbeit mit PHP zu erfahren, fahren Sie mit unserem PHP Developer Center fort.

Weitere Informationen zum Speicher-Explorer und blobs finden Sie unter Verwalten von Azure Blob Storage-Ressourcen mit dem Speicher-Explorer.