Freigeben über


Hochladen eines Blobs mit 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 für die Arbeit mit der Azure Blob Storage-Clientbibliothek für JavaScript eingerichtet haben. Informationen zum Einrichten Ihres Projekts, einschließlich der Paketinstallation, dem Importieren von Modulen und dem Erstellen eines autorisierten Clientobjekts für die Verwendung mit Datenressourcen, finden Sie unter Erste Schritte mit Azure Blob Storage und TypeScript.
  • 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:

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);
}

Hochladen eines Blockblobs aus einem Stream

Im folgenden Beispiel wird ein Blockblob hochgeladen, indem ein lesbarer Stream erstellt und der Stream hochgeladen wird:

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);
}

Hochladen eines Blockblobs aus einem Puffer

Im folgenden Beispiel wird ein Blockblob aus einem Node.js-Puffer hochgeladen:

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);
}

Hochladen eines Blockblobs aus einer Zeichenfolge

Im folgenden Beispiel wird ein Blockblob aus einer Zeichenfolge hochgeladen:

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);
}

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.

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);
}

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:

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);
}

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:

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);
}

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 und TypeScript finden Sie in den folgenden Ressourcen.

REST-API-Vorgänge

Das Azure SDK für JavaScript und TypeScript 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 Sprachparadigmen. 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