JavaScript ile blob yükleme

Bu makalede JavaScript için Azure Depolama istemci kitaplığını kullanarak bir blobu karşıya yükleme işlemi gösterilmektedir. Bir dosya yolundan, akıştan, arabelleğe veya metin dizesinden blok bloba veri yükleyebilirsiniz. Blobları dizin etiketleriyle de karşıya yükleyebilirsiniz.

Önkoşullar

  • Bu makaledeki örneklerde, JavaScript için Azure Blob Depolama istemci kitaplığıyla çalışmak üzere ayarlanmış bir projeniz olduğu varsayılır. Paket yükleme, modülleri içeri aktarma ve veri kaynaklarıyla çalışmak üzere yetkili bir istemci nesnesi oluşturma gibi projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve JavaScript ile çalışmaya başlama.
  • Yetkilendirme mekanizmasının karşıya yükleme işlemi gerçekleştirme izinleri olmalıdır. Daha fazla bilgi edinmek için aşağıdaki REST API işlemleri için yetkilendirme kılavuzuna bakın:

Blok bloba veri yükleme

Bir blok bloba veri yüklemek için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:

Bu yöntemlerin her biri bir BlockBlobClient nesnesi kullanılarak çağrılabilir.

Dosya yolundan blok blobu yükleme

Aşağıdaki örnek yerel dosya yolundan bir blok blobunu karşıya yükler:

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

Akıştan blok blobu yükleme

Aşağıdaki örnek, okunabilir bir akış oluşturup akışı karşıya yükleyerek bir blok blobunu karşıya yükler:

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

Arabellekten blok blobu yükleme

Aşağıdaki örnek, Node.js arabelleğinden bir blok blobunu karşıya yükler:

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

Dizeden blok blobu yükleme

Aşağıdaki örnek bir dizeden blok blobunu karşıya yükler:

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

Yapılandırma seçenekleriyle blok blobu karşıya yükleme

Blobu karşıya yüklerken istemci kitaplığı yapılandırma seçeneklerini tanımlayabilirsiniz. Bu seçenekler performansı geliştirmek, güvenilirliği artırmak ve maliyetleri iyileştirmek için ayarlanabilir. Bu bölümdeki kod örnekleri , BlockBlobParallelUploadOptions arabirimini kullanarak yapılandırma seçeneklerini ayarlamayı ve bu seçenekleri bir karşıya yükleme yöntemi çağrısına parametre olarak geçirmeyi gösterir.

Karşıya yüklemede veri aktarımı seçeneklerini belirtme

Veri aktarımı işlemlerinin performansını artırmak için BlockBlobParallelUploadOptions içinde özellikleri yapılandırabilirsiniz. Aşağıdaki tabloda, yapılandırabileceğiniz özellikler ve bir açıklama listelenir:

Özellik Açıklama
blockSize Karşıya yükleme işleminin bir parçası olarak her istek için aktarım için maksimum blok boyutu.
concurrency Tek bir paralel aktarımın parçası olarak herhangi bir zamanda verilen en fazla paralel istek sayısı.
maxSingleShotSize Verilerin boyutu bu değerden küçük veya bu değere eşitse, öbeklere bölmek yerine tek bir yere yüklenir. Veriler tek bir çekimde karşıya yüklenirse blok boyutu yoksayılır. Varsayılan değer 256 MiB'dir.

Aşağıdaki kod örneğinde BlockBlobParallelUploadOptions değerlerinin nasıl ayarlanacağı ve karşıya yükleme yöntemi çağrısının bir parçası olarak seçeneklerin nasıl eklendiği gösterilmektedir. Örneklerde sağlanan değerlerin bir öneri olması amaçlanmamıştır. Bu değerleri düzgün bir şekilde ayarlamak için uygulamanızın belirli gereksinimlerini dikkate almanız gerekir.

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

Dizin etiketleriyle blok blobu karşıya yükleme

Blob dizin etiketleri, anahtar-değer etiketi özniteliklerini kullanarak depolama hesabınızdaki verileri kategorilere ayırır. Bu etiketler otomatik olarak dizinlenir ve verileri kolayca bulmak için aranabilir çok boyutlu bir dizin olarak kullanıma sunulur.

Aşağıdaki örnekte BlockBlobParallelUploadOptions kullanılarak dizin etiketleri ayarlanmış bir blok blobu karşıya yüklenir:

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

Karşıya yüklemede blob'un erişim katmanını ayarlama

BlockBlobParallelUploadOptions arabirimini kullanarak karşıya yüklemede blob'un erişim katmanını ayarlayabilirsiniz. Aşağıdaki kod örneğinde blob karşıya yüklenirken erişim katmanının nasıl ayarlanacağı gösterilmektedir:

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

Erişim katmanının ayarlanmasına yalnızca blok blobları için izin verilir. Blok blobu için erişim katmanını Hot, Cool, Coldveya Archiveolarak ayarlayabilirsiniz. Erişim katmanını olarak ayarlamak için Colden düşük istemci kitaplığı 12.13.0 sürümünü kullanmanız gerekir.

Erişim katmanları hakkında daha fazla bilgi edinmek için bkz. Erişim katmanlarına genel bakış.

Kaynaklar

JavaScript için Azure Blob Depolama istemci kitaplığını kullanarak blobları karşıya yükleme hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

REST API işlemleri

JavaScript için Azure SDK'sı, Azure REST API'sinin üzerine inşa edilerek tanıdık JavaScript paradigmalarıyla REST API işlemleriyle etkileşim kurmanızı sağlayan kitaplıklar içerir. Blobları karşıya yüklemek için istemci kitaplığı yöntemleri aşağıdaki REST API işlemlerini kullanır:

Kod örnekleri

Bu makaledeki (GitHub) kod örneklerini görüntüleyin:

İstemci kitaplığı kaynakları

Ayrıca bkz.