Aracılığıyla paylaş


Java ile blob özelliklerini ve meta verilerini yönetme

Bloblar, içerdikleri verilere ek olarak sistem özelliklerini ve kullanıcı tanımlı meta verileri destekler. Bu makalede, Java için Azure Depolama istemci kitaplığı ile sistem özelliklerinin ve kullanıcı tanımlı meta verilerin nasıl yönetileceğini gösterilmektedir.

Önkoşullar

Ortamınızı ayarlama

Mevcut bir projeniz yoksa, bu bölümde Java için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere bir projenin nasıl ayarlanacağı gösterilir. Daha fazla bilgi için bkz. Azure Blob Depolama ve Java'yı kullanmaya başlama.

Bu makaledeki kod örnekleriyle çalışmak için projenizi ayarlamak için bu adımları izleyin.

Not

Bu makalede, örnek kodu derlemek ve çalıştırmak için Maven derleme aracı kullanılmaktadır. Gradle gibi diğer derleme araçları da Java için Azure SDK ile çalışır.

Paketleri yükleme

pom.xml Dosyayı metin düzenleyicinizde açın. Bom dosyasını ekleyerek veya doğrudan bağımlılık ekleyerek paketleri yükleyin.

İçeri aktarma deyimleri ekleme

Aşağıdaki import deyimlerini ekleyin:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;

import java.util.*;

Yetkilendirme

Yetkilendirme mekanizması, kapsayıcı özellikleri veya meta verilerle çalışmak için gerekli izinlere sahip olmalıdır. Microsoft Entra Id ile yetkilendirme için (önerilir), alma işlemleri için Azure RBAC yerleşik rolü Depolama Blob Veri Okuyucusu veya üzeri, ayarlanan işlemler için depolama blobu veri katkıda bulunanı veya üzeri gerekir. Daha fazla bilgi edinmek için Bkz. Blob Özelliklerini Ayarlama (REST API), Blob Özelliklerini Alma (REST API), Blob Meta Verilerini Ayarlama (REST API)veya Blob Meta Verilerini Alma (REST API).

İstemci nesnesi oluşturma

Bir uygulamayı Blob Depolama'ya bağlamak için bir BlobServiceClient örneği oluşturun.

Aşağıdaki örnek kullanarak bir BlobServiceClient nesne DefaultAzureCredentialoluşturmak için BlobServiceClientBuilder'ı kullanır ve gerekirse kapsayıcı ve blob istemcilerinin nasıl oluşturulacağını gösterir:

// Azure SDK client builders accept the credential as a parameter
// TODO: Replace <storage-account-name> with your actual storage account name
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
        .endpoint("https://<storage-account-name>.blob.core.windows.net/")
        .credential(new DefaultAzureCredentialBuilder().build())
        .buildClient();

// If needed, you can create a BlobContainerClient object from the BlobServiceClient
BlobContainerClient containerClient = blobServiceClient
        .getBlobContainerClient("<container-name>");

// If needed, you can create a BlobClient object from the BlobContainerClient
BlobClient blobClient = containerClient
        .getBlobClient("<blob-name>");

İstemci nesneleri oluşturma ve yönetme hakkında daha fazla bilgi edinmek için bkz . Veri kaynaklarıyla etkileşim kuran istemci nesneleri oluşturma ve yönetme.

Özellikler ve meta veriler hakkında

  • Sistem özellikleri: Her Blob depolama kaynağında sistem özellikleri vardır. Bazıları okunabilir veya ayarlanabilirken, bazıları salt okunurdur. Bazı sistem özellikleri, kapakların altında belirli standart HTTP üst bilgilerine karşılık gelir. Java için Azure Depolama istemci kitaplığı bu özellikleri sizin için korur.

  • Kullanıcı tanımlı meta veriler: Kullanıcı tanımlı meta veriler, Blob depolama kaynağı için belirttiğiniz bir veya daha fazla ad-değer çiftini içerir. Kaynakla birlikte ek değerleri depolamak için meta verileri kullanabilirsiniz. Meta veri değerleri yalnızca sizin amaçlarınıza yöneliktir ve kaynağın davranışını etkilemez.

    Meta veri adı/değer çiftleri geçerli HTTP üst bilgileridir ve HTTP üst bilgilerini yöneten tüm kısıtlamalara uymalıdır. Meta veri adlandırma gereksinimleri hakkında daha fazla bilgi için bkz . Meta veri adları.

Not

Blob dizin etiketleri, Azure Blob depolama kaynağıyla birlikte rastgele kullanıcı tanımlı anahtar/değer özniteliklerini depolama olanağı da sağlar. Meta veriye benzer olsa da, yalnızca blob dizin etiketleri otomatik olarak dizinlenir ve yerel blob hizmeti tarafından aranabilir hale gelir. Azure Search gibi ayrı bir hizmet kullanmadığınız sürece meta veriler dizine alınamaz ve sorgulanamaz.

Bu özellik hakkında daha fazla bilgi edinmek için bkz . Blob diziniyle Azure Blob depolamada verileri yönetme ve bulma.

Özellikleri ayarlama ve alma

Blobda özellikleri ayarlamak için aşağıdaki yöntemi kullanın:

Aşağıdaki kod örneği bir blob üzerindeki ContentType ve ContentLanguage sistem özelliklerini ayarlar.

Açıkça ayarlanmayan tüm özellikler temizlenir. Aşağıdaki kod örneği önce blob üzerindeki mevcut özellikleri alır, ardından güncelleştirilmeyen üst bilgileri doldurmak için bunları kullanır.

public void setBlobProperties(BlobClient blobClient) {
    BlobProperties properties = blobClient.getProperties();

    // Set the ContentLanguage and ContentType headers, and populate the remaining
    // headers from the existing properties
    BlobHttpHeaders blobHeaders = new BlobHttpHeaders()
            .setContentLanguage("en-us")
            .setContentType("text/plain")
            .setCacheControl(properties.getCacheControl())
            .setContentDisposition(properties.getContentDisposition())
            .setContentEncoding(properties.getContentEncoding())
            .setContentMd5(properties.getContentMd5());

    blobClient.setHttpHeaders(blobHeaders);
    System.out.println("Set HTTP headers completed");
}

Blob üzerindeki özellikleri almak için aşağıdaki yöntemi kullanın:

Aşağıdaki kod örneği blobun sistem özelliklerini alır ve değerlerden bazılarını görüntüler:

public void getBlobProperties(BlobClient blobClient) {
    BlobProperties properties = blobClient.getProperties();

    System.out.printf("BlobType: %s%n", properties.getBlobType());
    System.out.printf("BlobSize: %d%n", properties.getBlobSize());
    System.out.printf("ContentLanguage: %s%n", properties.getContentLanguage());
    System.out.printf("ContentType: %s%n", properties.getContentType());
}

Meta verileri ayarlama ve alma

Meta verileri bir blob veya kapsayıcı kaynağında bir veya daha fazla ad-değer çifti olarak belirtebilirsiniz. Meta verileri ayarlamak için aşağıdaki yöntemi kullanarak ad-değer çiftleri içeren bir Map nesnesi gönderin:

Aşağıdaki kod örneği blob üzerindeki meta verileri ayarlar:

public void addBlobMetadata(BlobClient blobClient) {
    Map<String, String> metadata = new HashMap<String, String>();
    metadata.put("docType", "text");
    metadata.put("category", "reference");

    try {
        blobClient.setMetadata(metadata);
        System.out.printf("Set metadata completed %n");
    } catch (UnsupportedOperationException error) {
        System.out.printf("Failure while setting metadata %n");
    }
}

Meta verileri almak için blobunuzda getProperties yöntemini çağırarak meta veri koleksiyonunu doldurun ve aşağıdaki örnekte gösterildiği gibi değerleri okuyun. yöntemi hem getProperties Blob Özelliklerini Al işlemini hem de Blob Meta Verilerini Al işlemini çağırarak blob özelliklerini ve meta verilerini alır.

Aşağıdaki kod örneği blob üzerindeki meta verileri okur ve her anahtar/değer çiftini yazdırır:

public void readBlobMetadata(BlobClient blobClient) {
    // Get blob properties and metadata
    BlobProperties properties = blobClient.getProperties();

    System.out.printf("Blob metadata: %n");
    properties.getMetadata().entrySet().forEach(metadataItem -> {
        System.out.printf(" %s = %s%n", metadataItem.getKey(), metadataItem.getValue());
    });
}

Kaynaklar

Java için Azure Blob Depolama istemci kitaplığını kullanarak sistem özelliklerini ve kullanıcı tanımlı meta verileri yönetme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

Kod örnekleri

REST API işlemleri

Java için Azure SDK, Azure REST API'sinin üzerinde derlenmiş kitaplıklar içerir ve tanıdık Java paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlar. Sistem özelliklerini ve kullanıcı tanımlı meta verileri yönetmek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:

İstemci kitaplığı kaynakları

  • Bu makale, Java için Blob Depolama geliştirici kılavuzunun bir parçasıdır. Daha fazla bilgi edinmek için Java uygulamanızı derleme makalelerinde geliştirici kılavuzu makalelerinin tam listesine bakın.