Mengunggah blob dengan JavaScript

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 JavaScript.
  • 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:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadBlobFromLocalPath(containerClient, blobName, localFilePath){
  // Create blob client from container client
  const 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:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// readableStream: Readable stream, for example, a stream returned from fs.createReadStream()
async function uploadBlobFromReadStream(containerClient, blobName, readableStream) {
  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  // Upload data to block blob using a readable stream
  await blockBlobClient.uploadStream(readableStream);
}

Mengunggah blob blok dari buffer

Contoh berikut mengunggah blob blok dari buffer Node.js:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// buffer: blob contents as a buffer, for example, from fs.readFile()
async function uploadBlobFromBuffer(containerClient, blobName, buffer) {

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

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

Mengunggah blob blok dari string

Contoh berikut mengunggah blob blok dari string:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// fileContentsAsString: blob content
async function uploadBlobFromString(containerClient, blobName, fileContentsAsString){
  // Create blob client from container client
  const blockBlobClient = containerClient.getBlockBlobClient(blobName);

  await blockBlobClient.upload(fileContentsAsString, fileContentsAsString.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 unggah.

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 untuk ditransfer untuk setiap permintaan sebagai bagian dari operasi pengunggahan.
concurrency Jumlah maksimum permintaan paralel yang dikeluarkan pada waktu tertentu sebagai bagian dari satu transfer paralel.
maxSingleShotSize Jika ukuran data kurang dari atau sama dengan nilai ini, data diunggah dalam satu put 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 pengunggahan. Nilai yang disediakan dalam sampel tidak dimaksudkan untuk menjadi rekomendasi. Untuk menyempurnakan nilai-nilai ini dengan benar, Anda perlu mempertimbangkan kebutuhan spesifik aplikasi Anda.

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithTransferOptions(containerClient, blobName, localFilePath) {
  // Specify data transfer options
  const uploadOptions = {
    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 = containerClient.getBlockBlobClient(blobName);

  // Upload blob with index tags
  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:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithIndexTags(containerClient, blobName, localFilePath) {
  // Specify index tags for blob
  const uploadOptions = {
    tags: {
      'Sealed': 'false',
      'Content': 'image',
      'Date': '2023-06-01',
    }
  }

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

  // Upload blob with index tags
  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:

// containerClient: ContainerClient object
// blobName: string, includes file extension if provided
// localFilePath: fully qualified path and file name
async function uploadWithAccessTier(containerClient, blobName, localFilePath) {
  // Specify access tier
  const uploadOptions = {
    tier: 'Cool',
  }

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

  // Upload blob to cool tier
  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, lihat sumber daya berikut ini.

Operasi REST API

Azure SDK untuk JavaScript berisi pustaka yang dibangun di atas Azure REST API, memungkinkan Anda berinteraksi dengan operasi REST API melalui paradigma JavaScript yang sudah dikenal. 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