Bagikan melalui


Mengelola properti blob dan metadata dengan Java

Selain data yang dikandungnya, blob mendukung properti sistem dan metadata yang ditentukan pengguna. Artikel ini memperlihatkan cara mengelola properti sistem dan metadata yang ditentukan pengguna dengan pustaka klien Azure Storage untuk Java.

Prasyarat

Menyiapkan lingkungan Anda

Jika Anda tidak memiliki proyek yang sudah ada, bagian ini memperlihatkan kepada Anda cara menyiapkan proyek untuk bekerja dengan pustaka klien Azure Blob Storage untuk Java. Untuk informasi selengkapnya, lihat Mulai menggunakan Azure Blob Storage dan Java.

Untuk bekerja dengan contoh kode dalam artikel ini, ikuti langkah-langkah ini untuk menyiapkan proyek Anda.

Catatan

Artikel ini menggunakan alat build Maven untuk membangun dan menjalankan kode contoh. Alat build lainnya, seperti Gradle, juga bekerja dengan Azure SDK untuk Java.

Memasang paket

Buka file pom.xml di editor teks Anda. Instal paket dengan menyertakan file BOM, atau termasuk dependensi langsung.

Menambahkan pernyataan impor

Tambahkan pernyataan import berikut:

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

import java.util.*;

Authorization

Mekanisme otorisasi harus memiliki izin yang diperlukan untuk bekerja dengan properti kontainer atau metadata. Untuk otorisasi dengan MICROSOFT Entra ID (disarankan), Anda memerlukan peran bawaan Azure RBAC Storage Blob Data Reader atau yang lebih tinggi untuk operasi get , dan Storage Blob Data Contributor atau yang lebih tinggi untuk operasi yang ditetapkan . Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk Mengatur Properti Blob (REST API), Dapatkan Properti Blob (REST API), Atur Metadata Blob (REST API), atau Dapatkan Metadata Blob (REST API).

Membuat objek klien

Untuk menyambungkan aplikasi ke Blob Storage, buat instans BlobServiceClient.

Contoh berikut menggunakan BlobServiceClientBuilder untuk membangun BlobServiceClient objek menggunakan DefaultAzureCredential, dan menunjukkan cara membuat klien kontainer dan blob, jika diperlukan:

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

Untuk mempelajari selengkapnya tentang membuat dan mengelola objek klien, lihat Membuat dan mengelola objek klien yang berinteraksi dengan sumber daya data.

Tentang properti dan metadata

  • Properti sistem: Properti sistem ada di setiap sumber daya penyimpanan Blob. Beberapa dari mereka dapat dibaca atau diatur, sementara yang lain baca-saja. Di bawah sampul, beberapa properti sistem sesuai dengan header HTTP standar tertentu. Pustaka klien Azure Storage untuk Java mempertahankan properti ini untuk Anda.

  • Metadata yang ditentukan pengguna: Metadata yang ditentukan pengguna terdiri dari satu atau beberapa pasangan nama-nilai yang Anda tentukan untuk sumber daya penyimpanan Blob. Anda dapat menggunakan metadata untuk menyimpan nilai tambahan dengan sumber daya. Nilai metadata hanya untuk tujuan Anda sendiri, dan tidak memengaruhi perilaku sumber daya.

    Pasangan nama/nilai metadata adalah header HTTP yang valid dan harus mematuhi semua batasan yang mengatur header HTTP. Untuk informasi selengkapnya tentang persyaratan penamaan metadata, lihat Nama metadata.

Catatan

Tag indeks blob juga menyediakan kemampuan untuk menyimpan atribut kunci/nilai yang ditentukan pengguna bersama sumber daya penyimpanan Azure Blob. Meskipun mirip dengan metadata, hanya tag indeks blob yang secara otomatis diindeks dan dibuat dapat dicari oleh layanan blob asli. Metadata tidak dapat diindeks dan dikueri kecuali Anda menggunakan layanan terpisah seperti Azure Search.

Untuk mempelajari selengkapnya tentang fitur ini, lihat Mengelola dan menemukan data di penyimpanan Azure Blob dengan indeks blob.

Atur dan ambil properti

Untuk mengatur properti pada blob, gunakan metode berikut:

Contoh kode berikut mengatur properti sistem ContentType dan ContentLanguage pada blob.

Properti apa pun yang tidak disetel secara eksplisit akan dibersihkan. Contoh kode berikut terlebih dahulu mendapatkan properti yang ada pada blob, lalu menggunakannya untuk mengisi header yang tidak sedang diperbarui.

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");
}

Untuk mengambil properti pada blob, gunakan metode berikut:

Contoh kode berikut mendapatkan properti sistem blob dan menampilkan beberapa nilai:

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

Atur dan ambil metadata

Anda dapat menentukan metadata sebagai satu atau beberapa pasangan nama-nilai pada sumber daya blob atau kontainer. Untuk mengatur metadata, kirim objek Peta yang berisi pasangan nama-nilai menggunakan metode berikut:

Contoh kode berikut menetapkan metadata pada blob:

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");
    }
}

Untuk mengambil metadata, panggil metode getProperties pada blob Anda untuk mengisi koleksi metadata, lalu baca nilai, seperti yang ditunjukkan pada contoh di bawah ini. Metode ini getProperties mengambil properti blob dan metadata dengan memanggil operasi Dapatkan Properti Blob dan operasi Dapatkan Metadata Blob.

Contoh kode berikut membaca metadata pada blob dan mencetak setiap pasangan kunci/nilai:

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

Sumber

Untuk mempelajari selengkapnya tentang cara mengelola properti sistem dan metadata yang ditentukan pengguna menggunakan pustaka klien Azure Blob Storage untuk Java, lihat sumber daya berikut ini.

Sampel kode

Operasi REST API

Azure SDK untuk Java berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma Java yang sudah dikenal. Metode pustaka klien untuk mengelola properti sistem dan metadata yang ditentukan pengguna menggunakan operasi REST API berikut:

Sumber daya pustaka klien

  • Artikel ini adalah bagian dari panduan pengembang Blob Storage untuk Java. Untuk mempelajari lebih lanjut, lihat daftar lengkap artikel panduan pengembang di Membangun aplikasi Java Anda.