PHP kullanarak nesneleri Azure Blob depolama içine/dışına aktarma

Bu hızlı başlangıçta, Azure Blob depolamadaki bir kapsayıcıda blok bloblarını karşıya yüklemek, indirmek ve listelemek için PHP'yi nasıl kullanabileceğinizi öğreneceksiniz.

Önkoşullar

Azure Depolama'ya erişmek için bir Azure aboneliğine ihtiyacınız vardır. Henüz aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Azure Depolama'ya tüm erişim bir depolama hesabı üzerinden gerçekleştirilir. Bu hızlı başlangıçta Azure portal, Azure PowerShell veya Azure CLI kullanarak bir depolama hesabı oluşturun. Depolama hesabı oluşturma konusunda yardım için bkz. Depolama hesabı oluşturma.

Aşağıdaki ek önkoşulların yüklü olduğundan emin olun:

Örnek uygulamayı indirin:

Bu hızlı başlangıçta kullanılan örnek uygulama, temel bir PHP uygulamasıdır.

Uygulamanın bir kopyasını geliştirme ortamınıza indirmek için Git'i kullanın.

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

Bu komut, depoyu yerel Git klasörünüze kopyalar. Örnek PHP uygulamasını indirmek için storage-blobs-php-quickstart klasörünün içindeki phpqa.php dosyasını açın.

Azure portalından kimlik bilgilerinizi kopyalama

Örnek uygulamanın, depolama hesabınıza erişim yetkisi vermesi gerekir. Depolama hesabı kimlik bilgilerinizi uygulamaya bağlantı dizesi biçiminde sağlayın. Depolama hesabınızın kimlik bilgilerini görüntülemek için:

  1. Azure portal depolama hesabınıza gidin.

  2. Depolama hesabına genel bakışın Ayarlar bölümünde Erişim anahtarları'nı seçerek hesap erişim anahtarlarınızı ve bağlantı dizenizi görüntüleyin.

  3. Yetkilendirme için gerekecek olan depolama hesabınızın adını not edin.

  4. anahtar1 altında Anahtar değerini bulun ve kopyala'yı seçerek hesap anahtarını kopyalayın.

    Azure portalından hesap anahtarınızın kopyalanmasını gösteren ekran görüntüsü

Depolama bağlantı dizelerinizi yapılandırma

Uygulamada, uygulamanız için BlobRestProxy örneği oluşturmak amacıyla depolama hesabı adınızı ve hesap anahtarınızı sağlamanız gerekir. Bu tanımlayıcıları uygulamayı çalıştıran yerel makine üzerindeki bir ortam değişkeninde depolamanız önerilir. Ortam değişkenini oluşturmak için İşletim Sisteminize bağlı olarak aşağıdaki örneklerden birini kullanın. youraccountname ve accountkey değerlerini, hesap adınız ve anahtarınızla değiştirin.

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

Ortamınızı yapılandırma

Yerel git klasörünüzden klasörü alın ve PHP sunucunuzun hizmet verdiği bir dizine yerleştirin. Ardından, kapsamı aynı dizinde oluşturulmuş bir komut istemi açıp şunu girin: php composer.phar install

Örneği çalıştırma

Bu örnek, ‘.’ klasöründe bir sınama dosyası oluşturur. Örnek program sınama dosyasını Blob depolamaya yükler, kapsayıcıdaki blobları listeler ve dosyayı yeni bir adla indirir.

Örnek uygulamayı çalıştırın. Aşağıdaki çıktı, uygulama çalıştırılırken döndürülen çıktının bir örneğidir:

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!

Ekrandaki tuşuna bastığınızda, örnek program depolama kapsayıcısını ve dosyaları siler. Devam etmeden önce, iki dosya için sunucunuzun klasörünü kontrol edin. Dosyaları açarak aynı olduklarını görebilirsiniz.

Ayrıca, Blob depolamadaki dosyaları görüntülemek için, Azure Depolama Gezgini gibi bir araç da kullanabilirsiniz. Azure Depolama Gezgini, depolama hesabı bilgilerinize erişmenize olanak tanıyan ücretsiz ve platformlar arası bir araçtır.

Dosyaları doğruladıktan sonra, tanıtımı tamamlamak ve test dosyalarını silmek için herhangi bir tuşa basın. Artık örnek dosyanın işlevini gördüğünüze göre, koda göz atmak için example.rb dosyasını açabilirsiniz.

Örnek kodu anlama

Sonraki aşamada, nasıl çalıştığını anlayabilmeniz için örnek kodu inceleyeceğiz.

Depolama nesneleriyle ilgili başvuruları alma

İlk önce, Blob depolamaya erişmek ve Blob depolamayı yönetmek için kullanılan nesnelere başvuru oluşturmaktır. Bu nesneler birbirleri üzerinde derlenir ve her bir dosya, listede yanında yer alan dosya tarafından kullanılır.

  • Azure depolama örneğini oluşturmak BlobRestProxy nesne bağlantı kimlik bilgilerini ayarlayın.
  • Depolama hesabınızdaki Blob hizmetine işaret eden bir BlobService nesnesi oluşturun.
  • Eriştiğiniz kapsayıcıyı ifade eden bir Container nesnesi oluşturun. Kapsayıcılar, tıpkı bilgisayarınızdaki dosyaları düzenlemek için klasörleri kullandığınız gibi blobları düzenlemek için kullanılır.

blobClient kapsayıcı nesnesini oluşturduktan sonra, ilgilendiğiniz belirli bir blobu işaret eden Block blob nesnesini oluşturabilirsiniz. Daha sonra karşıya yükleme, indirme ve kopyalama gibi işlemler gerçekleştirebilirsiniz.

Önemli

Kapsayıcı adlarının küçük harfle yazılması gerekir. Kapsayıcılar ve blob adları hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Bunlara Başvurma.

Bu bölümde Azure depolama istemcisi örneği kurdunuz, blob hizmeti nesnesini oluşturdunuz, yeni bir kapsayıcı oluşturdunuz ve kapsayıcıdaki izinleri bloblar herkese açık olacak şekilde ayarladınız. Bu kapsayıcının adı quickstartblobs’dur.

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

Blobları kapsayıcıya yükleme

Blob depolama blok blobları, ekleme bloblarını ve sayfa bloblarını destekler. Blok blobları en sık kullanılan bloblardır ve bu hızlı başlangıçta bu bloblar kullanılmıştır.

Bir dosyayı bloba yüklemek için, yerel diskinizdeki dizin adıyla dosya adını birleştirerek dosyanın tam yolunu alın. Sonra, dosyayı belirtilen yola createBlockBlob() yöntemiyle yükleyebilirsiniz.

Örnek kod bir yerel dosya alır ve Azure'a yükler. Dosya myfile olarak depolanır ve blob adı koda fileToUpload olarak kaydedilir. Aşağıdaki örnek, dosyayı quickstartblobs adlı kapsayıcınıza yükler.

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

Bir blok blobunun içeriğini kısmen güncelleştirmek için createblocklist() yöntemini kullanın. Blok bloblarının boyutu 4,7 TB’yi bulabilir ve bu bloblar Excel elektronik tablolarından büyük video dosyalarına kadar birçok türde olabilir. Sayfa blobları öncelikli olarak IaaS VM'leri desteklemek için kullanılan VHD dosyalarında kullanılır. Ekleme blobları, bir dosyaya yazıp daha sonradan daha fazla bilgi eklemek istediğiniz durumlarda günlüğe kaydetme için kullanılır. Ekleme blobu tek bir yazar modelinde kullanılabilir. Blob depolamada depolanan nesnelerin çoğu blok blobudur.

Kapsayıcıdaki blobları listeleme

listBlobs() yöntemini kullanarak kapsayıcıdaki dosyaların listesini alabilirsiniz. Aşağıdaki kod blob listesini alır, ardından bu bloblarda döngü yapar ve kapsayıcıda bulunan blobların adlarını gösterir.

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

Bloblarınızın içeriğini alma

getBlob() yöntemini kullanarak bloblarınızın içeriğini alın. Aşağıdaki kod, önceki bir bölümde karşıya yüklenen blobun içeriğini gösterir.

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

Kaynakları temizleme

Bu hızlı başlangıçta karşıya yüklenen bloblara artık ihtiyacınız kalmadığında, deleteContainer() yöntemini kullanarak kapsayıcının tamamını silebilirsiniz. Oluşturulan dosyalar artık gerekli değilse, dosyaları silmek için deleteBlob() yöntemini kullanırsınız.

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

Bloblarla PHP uygulamaları geliştirme kaynakları

Blob depolama ile PHP geliştirmeye yönelik şu ek kaynaklara bakın:

Sonraki adımlar

Bu hızlı başlangıçta, dosyaları PHP kullanarak yerel bir disk ile Azure blob depolama arasında aktarmayı öğrendiniz. PHP ile çalışma hakkında daha fazla bilgi edinmek için PHP Geliştirici merkezimize devam edin.

Depolama Gezgini ve Bloblar hakkında daha fazla bilgi için bkz. Azure Blob depolama kaynaklarını Depolama Gezgini'yle yönetme.