Hochladen eines Blobs mit JavaScript oder TypeScript
In diesem Artikel wird beschrieben, wie ein Blob mithilfe der Azure Storage-Clientbibliothek für JavaScript hochgeladen wird. Sie können Daten aus einem Dateipfad, einem Stream, einem Puffer oder einer Textzeichenfolge in ein Blockblob hochladen. Sie können auch Blobs mit Indextags hochladen.
Voraussetzungen
- Bei den Beispielen in diesem Artikel wird davon ausgegangen, dass Sie bereits ein Projekt eingerichtet haben, das mit der Azure Blob Storage Clientbibliothek für JavaScript arbeitet. Wie Sie Ihr Projekt einrichten, einschließlich der Installation von Paketen, dem Import von Modulen und der Erstellung eines autorisierten Client-Objekts für die Arbeit mit Datenressourcen, erfahren Sie unter Erste Schritte mit Azure Blob Storage und JavaScript.
- Der Autorisierungsmechanismus muss über Berechtigungen zum Ausführen eines Uploadvorgangs verfügen. Weitere Informationen finden Sie im Autorisierungsleitfaden für die folgenden REST-API-Vorgänge:
Hochladen von Daten in ein Blockblob
Sie können eine der folgenden Methoden verwenden, um Daten in ein Blockblob hochzuladen:
- upload (nicht parallele Uploadmethode)
- uploadData
- uploadFile (nur in der Node.js-Runtime verfügbar)
- uploadStream (nur in der Node.js-Runtime verfügbar)
Jede dieser Methoden kann mit einem BlockBlobClient-Objekt aufgerufen werden.
Hochladen eines Blockblobs aus einem lokalen Dateipfad
Im folgenden Beispiel wird ein Blockblob aus einem lokalen Dateipfad hochgeladen:
// 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);
}
Hochladen eines Blockblobs aus einem Stream
Im folgenden Beispiel wird ein Blockblob hochgeladen, indem ein lesbarer Stream erstellt und der Stream hochgeladen wird:
// 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);
}
Hochladen eines Blockblobs aus einem Puffer
Im folgenden Beispiel wird ein Blockblob aus einem Node.js-Puffer hochgeladen:
// 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);
}
Hochladen eines Blockblobs aus einer Zeichenfolge
Im folgenden Beispiel wird ein Blockblob aus einer Zeichenfolge hochgeladen:
// 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);
}
Upload eines Blockblobs mit Konfigurationsoptionen
Beim Upload eines Blobs können Sie Clientbibliotheks-Konfigurationsoptionen definieren. Diese Optionen können feiner abgestimmt werden, um die Leistung und die Zuverlässigkeit zu verbessern und die Kosten zu optimieren. Die Codebeispiele in diesem Abschnitt zeigen, wie Konfigurationsoptionen mithilfe der BlockBlobParallelUploadOptions-Schnittstelle festgelegt und diese Optionen als Parameter an einen Uploadmethodenaufruf übergeben werden.
Angeben von Datenübertragungsoptionen beim Upload
Sie können Eigenschaften unter BlockBlobParallelUploadOptions konfigurieren, um die Leistung für Datenübertragungsvorgänge zu verbessern. In der folgenden Tabelle sind die Eigenschaften aufgeführt, die Sie konfigurieren können, zusammen mit einer Beschreibung:
Eigenschaft | Beschreibung |
---|---|
blockSize |
Die maximale Blockgröße, die für jede Anforderung im Rahmen eines Uploadvorgangs übertragen werden soll. |
concurrency |
Die maximale Anzahl paralleler Anforderungen, die zu einem bestimmten Zeitpunkt im Rahmen einer einzelnen parallelen Übertragung ausgegeben werden. |
maxSingleShotSize |
Wenn die Größe der Daten kleiner oder gleich diesem Wert ist, werden sie in einem einzelnen Put hochgeladen, anstatt in Blöcke aufgeteilt zu werden. Wenn die Daten in einem einzigen Vorgang hochgeladen werden, wird die Blockgröße ignoriert. Der Standardwert ist 256 MiB. |
Im folgenden Codebeispiel wird gezeigt, wie Sie Werte für BlockBlobParallelUploadOptions festlegen und die Optionen als Teil eines Uploadmethodenaufrufs einbeziehen. Die in diesem Beispiel angegebenen Werte sind nicht als Empfehlungen zu verstehen. Zur ordnungsgemäßen Optimierung dieser Werte müssen die spezifischen Anforderungen Ihrer App berücksichtigt werden.
// 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 transfer options
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Weitere Informationen zur Feinabstimmung von Datenübertragungsoptionen finden Sie unter Leistungsoptimierung für Uploads und Downloads mit JavaScript.
Hochladen eines Blockblobs mit Indextags
Blobindextags kategorisieren Daten in Ihrem Speicherkonto mithilfe von Schlüssel-Wert-Tagattributen. Diese Tags werden automatisch indiziert und als durchsuchbarer mehrdimensionaler Index verfügbar gemacht, um Daten einfach finden zu können.
Im folgenden Beispiel wird ein Blockblob mit festgelegten Indextags mithilfe von BlockBlobParallelUploadOptions hochgeladen:
// 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': '2022-07-18',
}
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob with index tags
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Festlegen der Zugriffsebene eines Blobs während des Uploads
Sie können die Zugriffsebene eines Blobs beim Hochladen festlegen, indem Sie die BlockBlobParallelUploadOptions-Schnittstelle verwenden. Im folgenden Codebeispiel wird gezeigt, wie die Zugriffsebene beim Upload eines Blobs festgelegt wird:
// 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 = {
// 'Hot', 'Cool', 'Cold', or 'Archive'
tier: 'Cool',
}
// Create blob client from container client
const blockBlobClient = containerClient.getBlockBlobClient(blobName);
// Upload blob to cool tier
await blockBlobClient.uploadFile(localFilePath, uploadOptions);
}
Das Festlegen der Zugriffsebene ist nur für Blockblobs zulässig. Sie können die Zugriffsebene für ein Blockblob auf Hot
, Cool
, Cold
oder Archive
festlegen. Um die Zugriffsebene auf Cold
festzulegen, müssen Sie mindestens die Version 12.13.0 der Clientbibliothek verwenden.
Weitere Informationen zu Zugriffsebenen finden Sie unter Übersicht über Zugriffsebenen.
Ressourcen
Weitere Informationen zum Hochladen von Blobs mithilfe der Azure Blob Storage-Clientbibliothek für JavaScript finden Sie in den folgenden Ressourcen.
REST-API-Vorgänge
Das Azure SDK für JavaScript enthält Bibliotheken, die auf der zugrunde liegenden Azure-REST-API basieren und ermöglicht Ihnen dadurch die Interaktion mit REST-API-Vorgängen über vertraute JavaScript-Paradigmen. Die Clientbibliotheksmethoden zum Hochladen von Blobs verwenden die folgenden REST-API-Vorgänge:
Codebeispiele
Sehen Sie sich Codebeispiele aus diesem Artikel (GitHub) an:
- Hochladen aus dem lokalen Dateipfad für JavaScript oder TypeScript
- Hochladen aus dem Puffer für JavaScript oder TypeScript
- Hochladen aus einem Datenstrom für JavaScript oder TypeScript
- Hochladen aus einer Zeichenfolge für JavaScript oder TypeScript
- Hochladen mit Übertragungsoptionen für JavaScript oder TypeScript
- Hochladen mit Indextags für JavaScript oder TypeScript
- Hochladen mit einer Zugriffsebene für JavaScript oder TypeScript
Ressourcen zur Clientbibliothek
Weitere Informationen
- Verwalten und Finden von Azure-Blobdaten mit Blobindextags
- Verwenden von Blobindextags zum Verwalten und Suchen von Daten in Azure Blob Storage
Zugehöriger Inhalt
- Dieser Artikel ist Teil des Blob Storage-Entwicklerleitfadens für JavaScript/TypeScript. Weitere Informationen finden Sie in der vollständigen Liste der Entwicklerleitfäden unter Erstellen Ihrer JavaScript-/TypeScript-App.