Mengunggah blob dengan TypeScript

Artikel ini memperlihatkan cara mengunggah blob menggunakan pustaka klien Azure Storage untuk JavaScript. Anda dapat mengunggah data ke blob blok dari jalur file, aliran, buffer, atau string teks. Anda juga dapat mengunggah blob dengan tag indeks.

Prasyarat

  • Contoh dalam artikel ini mengasumsikan Anda sudah memiliki proyek yang disiapkan untuk bekerja dengan pustaka klien Azure Blob Storage untuk JavaScript. Untuk mempelajari tentang menyiapkan proyek Anda, termasuk penginstalan paket, mengimpor modul, dan membuat objek klien resmi untuk bekerja dengan sumber daya data, lihat Mulai menggunakan Azure Blob Storage dan TypeScript.
  • Mekanisme otorisasi harus memiliki izin untuk melakukan operasi unggahan. Untuk mempelajari lebih lanjut, lihat panduan otorisasi untuk operasi REST API berikut:

Mengunggah data ke blob blok

Anda dapat menggunakan salah satu metode berikut untuk mengunggah data ke blob blok:

Masing-masing metode ini dapat dipanggil menggunakan objek BlockBlobClient .

Mengunggah blob blok dari jalur file

Contoh berikut mengunggah blob blok dari jalur file lokal:

async function uploadBlobFromLocalPath(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadFile(localFilePath);
}

Mengunggah blob blok dari aliran

Contoh berikut mengunggah blob blok dengan membuat aliran yang dapat dibaca dan mengunggah aliran:

async function uploadBlobFromReadStream(
  containerClient: ContainerClient,
  blobName: string,
  readStream: fs.ReadStream
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadStream(readStream);
}

Mengunggah blob blok dari buffer

Contoh berikut mengunggah blob blok dari buffer Node.js:

async function uploadBlobFromBuffer(
  containerClient: ContainerClient, blobName: string, buffer: Buffer
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload buffer
  await blockBlobClient.uploadData(buffer);
}

Mengunggah blob blok dari string

Contoh berikut mengunggah blob blok dari string:

async function uploadBlobFromString(
  containerClient: ContainerClient,
  blobName: string,
  fileContents: string
): Promise<void> {
  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.upload(fileContents, fileContents.length);
}

Mengunggah blob blok dengan opsi konfigurasi

Anda dapat menentukan opsi konfigurasi pustaka klien saat mengunggah blob. Opsi ini dapat disetel untuk meningkatkan performa, meningkatkan keandalan, dan mengoptimalkan biaya. Contoh kode di bagian ini menunjukkan cara mengatur opsi konfigurasi menggunakan antarmuka BlockBlobParallelUploadOptions , dan cara meneruskan opsi tersebut sebagai parameter ke panggilan metode unggahan.

Tentukan opsi transfer data saat diunggah

Anda dapat mengonfigurasi properti di BlockBlobParallelUploadOptions untuk meningkatkan performa operasi transfer data. Tabel berikut ini mencantumkan properti yang bisa Anda konfigurasi, bersama dengan deskripsi:

Properti Deskripsi
blockSize Ukuran blok maksimum yang akan ditransfer untuk setiap permintaan sebagai bagian dari operasi pengunggahan.
concurrency Jumlah maksimum permintaan paralel yang dikeluarkan pada waktu tertentu sebagai bagian dari transfer paralel tunggal.
maxSingleShotSize Jika ukuran data kurang dari atau sama dengan nilai ini, data diunggah dalam satu taruh daripada dipecah menjadi potongan. Jika data diunggah dalam satu bidikan, ukuran blok diabaikan. Nilai defaultnya adalah 256 MiB.

Contoh kode berikut menunjukkan cara mengatur nilai untuk BlockBlobParallelUploadOptions dan menyertakan opsi sebagai bagian dari panggilan metode unggahan. Nilai yang disediakan dalam sampel tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyempurnakan nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.

async function uploadWithTransferOptions(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Specify data transfer options
  const uploadOptions: BlockBlobParallelUploadOptions = {
    blockSize: 4 * 1024 * 1024, // 4 MiB max block size
    concurrency: 2, // maximum number of parallel transfer workers
    maxSingleShotSize: 8 * 1024 * 1024, // 8 MiB initial transfer size
  };

  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Mengunggah blob blok dengan tag indeks

Tag indeks blob mengategorikan data di akun penyimpanan Anda menggunakan atribut tag nilai kunci. Tag ini secara otomatis diindeks dan diekspos sebagai indeks multi-dimensi yang dapat dicari untuk menemukan data dengan mudah.

Contoh berikut mengunggah blob blok dengan tag indeks yang diatur menggunakan BlockBlobParallelUploadOptions:

async function uploadBlobWithIndexTags(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Specify index tags for blob
  const uploadOptions: BlockBlobParallelUploadOptions = {
    tags: {
      'Sealed': 'false',
      'Content': 'image',
      'Date': '2023-06-01',
    }
  };

  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Mengatur tingkat akses blob saat diunggah

Anda dapat mengatur tingkat akses blob saat diunggah dengan menggunakan antarmuka BlockBlobParallelUploadOptions . Contoh kode berikut menunjukkan cara mengatur tingkat akses saat mengunggah blob:

async function uploadBlobWithAccessTier(
  containerClient: ContainerClient,
  blobName: string,
  localFilePath: string
): Promise<void> {
  // Upload blob to 'Cool' access tier
  const uploadOptions: BlockBlobParallelUploadOptions = {
    tier: 'Cool'
  };

  // Create blob client from container client
  const blockBlobClient: BlockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}

Mengatur tingkat akses hanya diperbolehkan untuk blob blok. Anda dapat mengatur tingkat akses untuk blob blok ke Hot, , CoolCold, atau Archive. Untuk mengatur tingkat akses ke Cold, Anda harus menggunakan versi pustaka klien minimum 12.13.0.

Untuk mempelajari selengkapnya tentang tingkat akses, lihat Gambaran umum tingkat akses.

Sumber

Untuk mempelajari selengkapnya tentang mengunggah blob menggunakan pustaka klien Azure Blob Storage untuk JavaScript dan TypeScript, lihat sumber daya berikut ini.

Operasi REST API

Azure SDK untuk JavaScript dan TypeScript berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma bahasa yang familier. Metode pustaka klien untuk mengunggah blob menggunakan operasi REST API berikut:

Sampel kode

Lihat sampel kode dari artikel ini (GitHub):

Sumber daya pustaka klien

Lihat juga