Compartir a través de

使用 TypeScript 从源对象 URL 复制 Blob

本文介绍如何使用适用于 JavaScript 的 Azure 存储客户端库从源对象 URL 复制 Blob。 可以从同一存储帐户中的源、不同存储帐户中的源或从给定 URL 上通过 HTTP GET 请求检索的任何可访问对象复制 Blob。

本文中介绍的客户端库方法使用 Put Blob From URLPut Block From URL REST API 操作。 对于要将数据移动到存储帐户并具有源对象的 URL 的复制方案,首选这些方法。 有关需要异步计划的复制操作,请参阅使用 TypeScript 通过异步计划复制 Blob

先决条件

  • 本文中的示例假设你已经设置了一个项目来使用适用于 JavaScript 的 Azure Blob 存储客户端库。 若要了解如何设置项目(包括安装包、导入模块,以及创建授权客户端对象来使用数据资源),请参阅开始使用 Azure Blob 存储和 TypeScript
  • 授权机制必须具有执行复制操作的权限。 若要了解详细信息,请参阅以下 REST API 操作的授权指南:

关于从源对象 URL 复制 Blob

Put Blob From URL 操作会创建一个新的块 Blob,该 Blob 的内容是从给定 URL 读取的。 该操作同步完成。

源可以是可通过给定 URL 上的标准 HTTP GET 请求检索的任何对象。 这包括块 Blob、追加 blob、页 blob、Blob 快照、Blob 版本或 Azure 内外的任何可访问对象。

当源对象是块 Blob 时,将复制所有提交的 Blob 内容。 但是,不会保留阻止列表,也不会复制未提交的块。 目标 Blob 的内容与源内容相同,但不会保留已提交的块列表。

目标始终是块 blob,可以是现有的 blob,或操作创建的新块 blob。 现有 blob 的内容会被新 blob 的内容覆盖。

Put Blob From URL 操作会始终复制整个源 blob。 不支持复制字节范围或块集。 若要使用源 URL 对块 blob 的内容执行部分更新,请使用 Put Block From URL API 和 Put Block List

若要详细了解 Put Blob From URL 操作(包括 blob 大小限制和计费注意事项),请参阅 Put Blob From URL 注解

从源对象 URL 复制 blob

本部分概述了由适用于 JavaScript 和 TypeScript 的 Azure 存储客户端库提供,用于从源对象 URL 执行复制操作的方法。

以下方法会包装 Put Blob From URL REST API 操作,并创建一个新的块 blob,该 blob 的内容是从给定 URL 读取的:

对于要将数据移动到存储帐户并具有源对象的 URL 的方案,首选这些方法。

对于大型对象,可以选择使用单个块。 以下方法可包装 Put Block From URL REST API 操作。 此方法会创建一个新块,以作为 blob 的一部分提交,其中的内容是从源 URL 读取的:

在 Azure 中从源复制 blob

如果要在 Azure 中从源复制 blob,可以通过 Microsoft Entra ID、共享访问签名 (SAS) 或帐户密钥来授权对源 blob 的访问。

以下示例演示了在 Azure 中从源 Blob 进行复制的方案:

async function copyFromSourceInAzure(
  sourceBlob: BlockBlobClient,
  destinationBlob: BlockBlobClient
): Promise<void> {
  // Get the source blob URL and create the destination blob
  await destinationBlob.syncUploadFromURL(sourceBlob.url);
}

syncUploadFromURL 方法还可以接受 BlockBlobSyncUploadFromURLOptions 参数,以指定操作的更多选项。

从 Azure 外部的源复制 Blob

你可以对可通过 HTTP GET 请求在给定 URL 上检索的任何源对象执行复制操作,包括 Azure 外部的可访问对象。 以下示例演示了从可访问的源对象 URL 复制 blob 的场景。

async function copyFromExternalSource(
  sourceUrl: string,
  destinationBlob: BlockBlobClient
): Promise<void> {
  // Create the destination blob from the source URL
  await destinationBlob.syncUploadFromURL(sourceUrl);
}

资源

若要详细了解如何使用适用于 JavaScript 和 TypeScript 的 Azure Blob 存储客户端库来复制 Blob,请参阅以下资源。

REST API 操作

适用于 JavaScript 和 TypeScript 的 Azure SDK 包含基于 Azure REST API 而生成的库,允许你通过熟悉的语言范例与 REST API 操作进行交互。 本文中介绍的客户端库方法使用以下 REST API 操作:

代码示例

客户端库资源