我正在使用@azure/store-blob包来操作Azure中的文件.

在同一个Azure存储帐户中,我有两个存储容器,即源和目标.

我try 做的是将位于源容器中的文件复制到目标容器,而不必下载该文件.

我目前正在下载到缓冲区,然后上传到目的地.

有没有办法直接做到这一点?

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);
const destinationBlockBlobClient = finalContainerClient.getBlockBlobClient(filename);

const sourceFileBuffer = await sourceBlockBlobClient.downloadToBuffer();
destinationBlockBlobClient.uploadData(sourceFileBuffer);

推荐答案

我用以下代码解决了这个问题:

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);
const destinationBlockBlobClient = finalContainerClient.getBlockBlobClient(filename);

// const sourceFileBuffer = await sourceBlockBlobClient.downloadToBuffer();
// destinationBlockBlobClient.uploadData(sourceFileBuffer);

await destinationBlockBlobClient.syncCopyFromURL(`${sourceBlockBlobClient.url}?${sasToken}`);

使用syncCopyFromUrl函数,我只是传递了一个URL,文件被正确且更快地复制了. 在我的场景中,我需要生成一个sasToken来确保文件可以被复制.

Node.js相关问答推荐

使用Moongose处理node.js中重定向的then()块链

MongoDB-如何验证Document字段以仅允许特定的文件扩展名?

如何使用Node.js、Express和Mongoose创建多个API

当FastifyJS向客户端发送响应时,apache 不会将其发送给他

Mongoose更新在^8.0.3版中,许多似乎不能按预期工作

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

如何在Sequelize with Postgres中将m:n关联表ID从整数迁移到UUID?

后端如何保护数据不被用户提取其他用户的数据?

在 TypeScript 中正确键入 MongoDB find 方法

Indexeddb 获取所有不同于特定值的记录

express 和 mongoose 的新密码不正确

Mocha调用所有it回调模拟(测试中间件)

如何在 node.js 环境中从 WebAssembly (Rust) 调用异步 JavaScript 导入函数?

您如何写入 aws lambda 实例的文件系统?

Node JS:自动 Select `http.get`与`https.get`

适用于 Windows 的 NVM 无法正常工作?

在 PassportJS 中使用多种本地策略

React Native ios build:找不到 node

User.findOrCreate 函数是做什么的,什么时候在Passport 中调用它?

expressjs app.VERB 调用中的 next() 和 next('route') 有什么区别?