Een blob uploaden met TypeScript
In dit artikel wordt beschreven hoe u een blob uploadt met behulp van de Azure Storage-clientbibliotheek voor JavaScript. U kunt gegevens uploaden naar een blok-blob vanuit een bestandspad, een stroom, een buffer of een tekenreeks. U kunt ook blobs uploaden met indextags.
Vereisten
- In de voorbeelden in dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld voor gebruik met de Azure Blob Storage-clientbibliotheek voor JavaScript. Zie Aan de slag met Azure Blob Storage en TypeScript voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het importeren van modules en het maken van een geautoriseerd clientobject voor gebruik met gegevensbronnen.
- Het autorisatiemechanisme moet machtigingen hebben om een uploadbewerking uit te voeren. Zie de autorisatierichtlijnen voor de volgende REST API-bewerkingen voor meer informatie:
Gegevens uploaden naar een blok-blob
U kunt een van de volgende methoden gebruiken om gegevens te uploaden naar een blok-blob:
- uploaden (niet-parallelle uploadmethode)
- uploadData
- uploadFile (alleen beschikbaar in Node.js runtime)
- uploadStream (alleen beschikbaar in Node.js runtime)
Elk van deze methoden kan worden aangeroepen met behulp van een BlockBlobClient-object .
Een blok-blob uploaden vanuit een bestandspad
In het volgende voorbeeld wordt een blok-blob geüpload vanuit een lokaal bestandspad:
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);
}
Een blok-blob uploaden vanuit een stream
In het volgende voorbeeld wordt een blok-blob geüpload door een leesbare stream te maken en de stream te uploaden:
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);
}
Een blok-blob uploaden vanuit een buffer
In het volgende voorbeeld wordt een blok-blob vanuit een Node.js buffer geüpload:
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);
}
Een blok-blob uploaden vanuit een tekenreeks
In het volgende voorbeeld wordt een blok-blob vanuit een tekenreeks geüpload:
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);
}
Een blok-blob uploaden met configuratieopties
U kunt configuratieopties voor clientbibliotheek definiëren bij het uploaden van een blob. Deze opties kunnen worden afgestemd om de prestaties te verbeteren, de betrouwbaarheid te verbeteren en de kosten te optimaliseren. De codevoorbeelden in deze sectie laten zien hoe u configuratieopties instelt met behulp van de interface BlockBlobParallelUploadOptions en hoe u deze opties als parameter doorgeeft aan een aanroep van de uploadmethode.
Opties voor gegevensoverdracht opgeven bij uploaden
U kunt eigenschappen configureren in BlockBlobParallelUploadOptions om de prestaties voor gegevensoverdrachtbewerkingen te verbeteren. De volgende tabel bevat de eigenschappen die u kunt configureren, samen met een beschrijving:
Eigenschappen | Beschrijving |
---|---|
blockSize |
De maximale blokgrootte die moet worden overgedragen voor elke aanvraag als onderdeel van een uploadbewerking. |
concurrency |
Het maximum aantal parallelle aanvragen dat op elk gewenst moment wordt uitgegeven als onderdeel van één parallelle overdracht. |
maxSingleShotSize |
Als de grootte van de gegevens kleiner is dan of gelijk is aan deze waarde, wordt deze geüpload in één put in plaats van opgesplitst in segmenten. Als de gegevens in één opname worden geüpload, wordt de blokgrootte genegeerd. De standaardwaarde is 256 MiB. |
In het volgende codevoorbeeld ziet u hoe u waarden instelt voor BlockBlobParallelUploadOptions en de opties opneemt als onderdeel van een aanroep van de uploadmethode. De waarden in de voorbeelden zijn niet bedoeld als aanbeveling. Als u deze waarden goed wilt afstemmen, moet u rekening houden met de specifieke behoeften van uw app.
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);
}
Een blok-blob uploaden met indextags
Blob-indextags categoriseren gegevens in uw opslagaccount met behulp van tagkenmerken met sleutelwaarde. Deze tags worden automatisch geïndexeerd en weergegeven als doorzoekbare multidimensionale index om eenvoudig gegevens te vinden.
In het volgende voorbeeld wordt een blok-blob geüpload met indextags die zijn ingesteld met behulp van 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);
}
De toegangslaag van een blob instellen bij uploaden
U kunt de toegangslaag van een blob instellen bij uploaden met behulp van de interface BlockBlobParallelUploadOptions . In het volgende codevoorbeeld ziet u hoe u de toegangslaag instelt bij het uploaden van een 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);
}
Het instellen van de toegangslaag is alleen toegestaan voor blok-blobs. U kunt de toegangslaag voor een blok-blob instellen op Hot
, Cool
of Archive
Cold
. Als u de toegangslaag wilt Cold
instellen, moet u een minimale clientbibliotheekversie van 12.13.0 gebruiken.
Zie het overzicht van Access-lagen voor meer informatie over toegangslagen.
Resources
Zie de volgende resources voor meer informatie over het uploaden van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor JavaScript en TypeScript.
REST API-bewerkingen
De Azure SDK voor JavaScript en TypeScript bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via bekende taalparadigma's. De clientbibliotheekmethoden voor het uploaden van blobs gebruiken de volgende REST API-bewerkingen:
Codevoorbeelden
Codevoorbeelden uit dit artikel bekijken (GitHub):
- Uploaden vanuit het lokale bestandspad
- Uploaden vanuit buffer
- Uploaden vanuit stream
- Uploaden vanuit tekenreeks
- Uploaden met overdrachtsopties
- Uploaden met indextags
- Uploaden met toegangslaag