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:

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:

Ressourcen zur Clientbibliothek

Weitere Informationen

  • 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.