Een blob uploaden met JavaScript
In dit artikel leest u 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 met indextags uploaden.
Vereisten
- In de voorbeelden in dit artikel wordt ervan uitgegaan dat u al een project hebt ingesteld om te werken met de Azure Blob Storage-clientbibliotheek voor JavaScript. Zie Aan de slag met Azure Blob Storage en JavaScript voor meer informatie over het instellen van uw project, inclusief pakketinstallatie, het importeren van modules en het maken van een geautoriseerd clientobject om met gegevensbronnen te werken.
- 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:
// 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);
}
Een blok-blob uploaden vanuit een stream
In het volgende voorbeeld wordt een blok-blob geüpload door een leesbare stroom te maken en de stream te uploaden:
// 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);
}
Een blok-blob uploaden vanuit een buffer
In het volgende voorbeeld wordt een blok-blob geüpload vanuit een Node.js buffer:
// 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);
}
Een blok-blob uploaden vanuit een tekenreeks
In het volgende voorbeeld wordt een blok-blob geüpload vanuit een tekenreeks:
// 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);
}
Een blok-blob uploaden met configuratieopties
U kunt configuratieopties voor de 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 een parameter doorgeeft aan een aanroep van de methode voor uploaden.
Opties voor gegevensoverdracht opgeven bij het uploaden
U kunt eigenschappen configureren in BlockBlobParallelUploadOptions om de prestaties voor gegevensoverdracht te verbeteren. De volgende tabel bevat de eigenschappen die u kunt configureren, samen met een beschrijving:
Eigenschap | 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 een bepaald 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 een 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.
// 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);
}
Een blok-blob met indextags uploaden
Blob-indextags categoriseren gegevens in uw opslagaccount met behulp van tagkenmerken voor sleutelwaarden. Deze tags worden automatisch geïndexeerd en weergegeven als een 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:
// 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);
}
De toegangslaag van een blob instellen bij het uploaden
U kunt de toegangslaag van een blob instellen bij het uploaden met behulp van de interface BlockBlobParallelUploadOptions . In het volgende codevoorbeeld ziet u hoe u de toegangslaag instelt bij het uploaden van een 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);
}
Het instellen van de toegangslaag is alleen toegestaan voor blok-blobs. U kunt de toegangslaag voor een blok-blob instellen op Hot
, Cool
, Cold
of Archive
. Als u de toegangslaag wilt instellen op Cold
, moet u minimaal versie 12.13.0 van de clientbibliotheek gebruiken.
Zie Overzicht van toegangslagen voor meer informatie over toegangslagen.
Resources
Zie de volgende bronnen voor meer informatie over het uploaden van blobs met behulp van de Azure Blob Storage-clientbibliotheek voor JavaScript.
REST API-bewerkingen
De Azure SDK voor JavaScript bevat bibliotheken die zijn gebaseerd op de Azure REST API, zodat u kunt communiceren met REST API-bewerkingen via vertrouwde JavaScript-paradigma's. De clientbibliotheekmethoden voor het uploaden van blobs maken gebruik van de volgende REST API-bewerkingen:
Codevoorbeelden
Bekijk codevoorbeelden uit dit artikel (GitHub):
- Uploaden vanuit lokaal bestandspad
- Uploaden vanuit buffer
- Uploaden vanuit stream
- Uploaden vanuit tekenreeks
- Uploaden met overdrachtsopties
- Uploaden met indextags
- Uploaden met toegangslaag