TypeScript 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ışacak yetkili bir istemci nesnesi oluşturma gibi projenizi ayarlama hakkında bilgi edinmek için bkz. Azure Blob Depolama ve TypeScript 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
Verileri bir blok bloba yüklemek için aşağıdaki yöntemlerden herhangi birini kullanabilirsiniz:
- karşıya yükleme (paralel olmayan karşıya yükleme yöntemi)
- Uploaddata
- uploadFile (yalnızca Node.js çalışma zamanında kullanılabilir)
- uploadStream (yalnızca Node.js çalışma zamanında kullanılabilir)
Bu yöntemlerin her biri bir BlockBlobClient nesnesi kullanılarak çağrılabilir.
Dosya yolundan blok blobu yükleme
Aşağıdaki örnekte yerel dosya yolundan bir blok blobu karşıya yüklenir:
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);
}
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:
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);
}
Arabellekten blok blobu yükleme
Aşağıdaki örnek, Node.js arabelleğinden bir blok blobunu karşıya yükler:
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);
}
Dizeden blok blobu yükleme
Aşağıdaki örnek bir dizeden blok blobunu karşıya yükler:
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);
}
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 örneklerinde BlockBlobParallelUploadOptions arabirimini kullanarak yapılandırma seçeneklerini ayarlama ve bu seçeneklerin bir karşıya yükleme yöntemi çağrısına parametre olarak geçirilmesi gösterilmektedir.
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 en büyük 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 ayırmak yerine tek bir yerleştirmeyle karşıya 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.
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);
}
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 örnek , BlockBlobParallelUploadOptions kullanılarak ayarlanmış dizin etiketlerine sahip bir blok blobunu karşıya yükler:
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);
}
Karşıya yüklemede blob'un erişim katmanını ayarlama
Karşıya yüklemede BlockBlobParallelUploadOptions arabirimini kullanarak 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:
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);
}
Erişim katmanını ayarlamaya yalnızca blok blobları için izin verilir. Blok blobu için erişim katmanını Hot
, Cool
, Cold
veya Archive
olarak ayarlayabilirsiniz. Erişim katmanını olarak ayarlamak için Cold
en düşük istemci kitaplığı sürümü olan 12.13.0 kullanmanız gerekir.
Erişim katmanları hakkında daha fazla bilgi edinmek için bkz. Erişim katmanlarına genel bakış.
Kaynaklar
JavaScript ve TypeScript 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 ve TypeScript için Azure SDK'sı, Azure REST API'sinin üzerinde derlenip tanıdık dil 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:
- Blob Yerleştirme (REST API)
- Blok Koy (REST API)
Kod örnekleri
Bu makaledeki (GitHub) kod örneklerini görüntüleyin:
- Yerel dosya yolundan karşıya yükleme
- Arabellekten karşıya yükleme
- Akıştan karşıya yükleme
- Dizeden karşıya yükleme
- Aktarım seçenekleriyle karşıya yükleme
- Dizin etiketleriyle karşıya yükleme
- Erişim katmanıyla karşıya yükleme