Aracılığıyla paylaş


PHP kullanarak nesneleri Azure Blob depolamaya/depolamadan aktarma

Bu hızlı başlangıçta, Azure Blob depolamadaki bir kapsayıcıda blok bloblarını indirmek, yüklemek ve listelemek için PHP kullanmayı öğreneceksiniz.

Önkoşullar

Azure Depolama'ya erişmek için bir Azure aboneliğiniz olmalıdı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ıç için Azure portalını, Azure PowerShell'i veya Azure CLI'yı 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çi 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. PHP örnek uygulamasını açmak için storage-blobs-php-quickstart klasörünü bulun ve phpqs.php dosyasını açın.

Azure portalından kimlik bilgilerinizi kopyalama

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

  1. Azure portalında 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 ihtiyacınız olacak depolama hesabınızın adını not edin.

  4. anahtar1 altında Anahtar değerini bulun ve hesap anahtarını kopyalamak için Kopyala'yı seçin.

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

Depolama bağlantı dizelerinizi yapılandırma

Uygulamada, uygulamanız için BlobRestProxy örneğini oluşturmak için depolama hesabı adınızı ve hesap anahtarınızı sağlamanız gerekir. Bu tanımlayıcıların, uygulamayı çalıştıran yerel makinedeki bir ortam değişkeni içinde depolanması önerilir. Ortam değişkenini oluşturmak için İşletim Sisteminize bağlı olarak aşağıdaki örneklerden birini kullanın. youraccountname ve youraccountkey değerlerini hesap adınız ve anahtarınız ile değiştirin.

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

Ortamınızı yapılandırma

Klasörü yerel git klasörünüzden alın ve PHP sunucunuz tarafından sunulan bir dizine yerleştirin. Ardından, kapsamı aynı dizine göre belirlenmiş bir komut istemi açın ve şunu girin: php composer.phar install

Örneği çalıştırma

Bu örnek , '.' klasöründe bir test dosyası oluşturur. Örnek program test 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 çıkış, uygulamayı çalıştırı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!

Görüntülenen düğmeye bastığınızda örnek program depolama kapsayıcısını ve dosyaları siler. Devam etmeden önce, iki dosya için sunucunuzun klasörünü denetleyin. Bunları açabilir ve 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 işlemini tamamlamak ve test dosyalarını silmek için herhangi bir tuşa basın. Artık örneğin ne yaptığını bildiğinize göre, koda bakmak için example.rb dosyasını açın.

Örnek kodu anlama

Ardından, nasıl çalıştığını anlayabilmen için örnek kodu inceleyeceğiz.

Depolama nesnelerine referansları alın

Yapılacak ilk şey, Blob depolamaya erişmek ve depolamayı yönetmek için kullanılan nesnelere başvurular oluşturmaktır. Bu nesneler birbirleri üzerinde oluşturulur ve her biri listedeki bir sonraki nesne tarafından kullanılır.

  • Bağlantı kimlik bilgilerini ayarlamak için Azure depolama BlobRestProxy nesnesinin bir örneğini oluşturun.
  • Depolama hesabınızda blob hizmetine işaret eden BlobService nesnesini oluşturun.
  • Eriştiğiniz kapsayıcıyı temsil eden Container nesnesini oluşturun. Kapsayıcılar, dosyalarınızı düzenlemek için bilgisayarınızdaki klasörleri kullandığınız gibi bloblarınızı düzenlemek için kullanılır.

blobClient kapsayıcı nesnesine sahip olduktan sonra, ilgilendiğiniz bloba işaret eden Block blob nesnesini oluşturabilirsiniz. Ardından 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ı ve blob adları hakkında daha fazla bilgi için bkz. Kapsayıcıları, Blobları ve Meta Verileri Adlandırma ve Başvurma.

Bu bölümde, azure depolama istemcisinin bir örneğini ayarlar, blob hizmeti nesnesinin örneğini oluşturur, yeni bir kapsayıcı oluşturur ve blobların genel olması için kapsayıcıda izinleri ayarlarsınız. Kapsayıcıya quickstartblobs adı verilir.

    # 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 yaygın kullanılanlardır ve bu hızlı başlangıçta bu bloblar kullanılır.

Bir dosyayı bloba yüklemek için, yerel sürücünüzdeki dizin adını ve dosya adını birleştirerek dosyanın tam yolunu alın. Ardından createBlockBlob() yöntemini kullanarak dosyayı belirtilen yola yükleyebilirsiniz.

Örnek kod yerel bir dosya alır ve Azure'a yükler. Dosya myfile olarak depolanır ve kodda fileToUpload olarak blobun adı depolanır. 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);

Blok blobunun içeriğinin kısmi güncelleştirmesini gerçekleştirmek için createblocklist() yöntemini kullanın. Blok blobları 4,7 TB kadar büyük olabilir ve Excel elektronik tablolarından büyük video dosyalarına kadar her şey olabilir. Sayfa blobları öncelikli olarak IaaS VM'lerini yedeklemek için kullanılan VHD dosyaları için kullanılır. Kaydetme amacıyla ekleme blobları, bir dosyaya yazıp daha sonra daha fazla bilgi eklemek istediğiniz durumlarda kullanılır. Ekleme blobu tek bir yazıcı modelinde kullanılmalıdır. Blob depolamada depolanan nesnelerin çoğu blok bloblarıdır.

Kapsayıcıdaki blobları listeleme

listBlobs() yöntemini kullanarak kapsayıcıdaki dosyaların listesini alabilirsiniz. Aşağıdaki kod blobların listesini alır, sonra bir kapsayıcıda bulunan blobların adlarını göstererek bunlar arasında döngü yapar.

    $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 bölümde karşıya yüklenen blobun içeriğini görüntüler.

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

Kaynakları temizle

Bu hızlı başlangıçta karşıya yüklenen bloblara artık ihtiyacınız yoksa 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ştirmeye yönelik kaynaklar

Blob depolama ile PHP geliştirme için şu ek kaynaklara bakın:

Sonraki Adımlar

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

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