You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用@azure/storage-blob直接在Azure Blob容器间复制文件

同一Azure存储账户内直接复制Blob(无需本地中转)

当然有更高效的方法——使用@azure/storage-blob提供的服务器端复制功能,通过beginCopyFromURL方法直接在Azure存储服务器内部完成文件复制,完全不需要将文件下载到本地缓冲区,既节省带宽又减少内存占用。

修正后的实现代码

const blobServiceClient = BlobServiceClient.fromConnectionString(BLOB_CONNECTION_STRING);

const sourceContainerClient = blobServiceClient.getContainerClient(SOURCE_CONTAINER_NAME);
const sourceBlockBlobClient = sourceContainerClient.getBlockBlobClient(filename);

const destinationContainerClient = blobServiceClient.getContainerClient(DESTINATION_CONTAINER_NAME);
// 修正原代码中的变量名错误:finalContainerClient → destinationContainerClient
const destinationBlockBlobClient = destinationContainerClient.getBlockBlobClient(filename);

// 发起服务器端复制请求
const copyPoller = await destinationBlockBlobClient.beginCopyFromURL(sourceBlockBlobClient.url);
// 等待复制操作完成(同步等待,根据业务场景也可以异步处理)
await copyPoller.pollUntilDone();

关键说明

  • 服务器端复制:该操作由Azure存储服务直接执行,数据不会经过你的应用服务器,复制效率远高于本地中转的方式
  • 权限要求:由于是同一存储账户内的复制,只要你的BlobServiceClient拥有足够权限(比如使用账户连接字符串),直接使用源Blob的URL即可,无需额外生成SAS令牌
  • 大文件友好:对于大文件,这种方式避免了本地内存溢出的风险,同时大幅缩短复制时间

内容的提问来源于stack exchange,提问作者ronssm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 03:20:01