将 blob 从私有 blob 容器复制到 Azure 中的公共 blob 容器

Posted

技术标签:

【中文标题】将 blob 从私有 blob 容器复制到 Azure 中的公共 blob 容器【英文标题】:Copying blob from private blob container to public blob container in Azure 【发布时间】:2020-01-12 23:35:30 【问题描述】:

我们在 Azure 存储上有两个 blob 容器。一个是私人的,另一个是公共的。我想让私有容器中的 blob 在我的应用程序中成为可公开访问的。

我正在尝试将 blob 从私有容器复制到公共容器。我在docs - Copy Blob 上找到了这个。但是,我无法成功执行此操作,也找不到详细的解释。

我得到的最后一个错误是关于 Authorization 标头没有正确形成。另一个之前的问题是关于Date 标头不正确,但我已经通过new Date().toUTCString() 而不是new Date() 解决了它。

我在这里错过了什么?

【问题讨论】:

看来你用的是rest api,为什么不用sdk? 我从 Node.js 连接。我会检查是否有它的sdk。 sdk是here,你使用sdk内的startCopyBlob方法。 【参考方案1】:

我建议你可以使用node.js sdk,然后使用方法startCopyBlob。使用rest api,构建认证需要一些时间,并不容易。

【讨论】:

我现在正在尝试 node.js sdk 和 startCopyBlob 方法。我收到一条错误消息:The value for one of the HTTP headers is not in the correct format. // Copy Blob blobService.startCopyBlob( $req.user.id/$sceneId/$fileName, AZURE_STORAGE_PUBLIC_CONTAINER_NAME, $sceneId/$fileName, blobResult => console.log("blobResult: ", blobResult); res.json( body: blobResult: blobResult ); ); 在这里我登录并返回blobResult 以查看一切进展如何。请注意,目标 blob uri 缺少 uer id,因为它是公开的,我们不希望通过对公开请求的响应来公开用户的 id。 我需要在它起作用的第一个参数中提供源 blob 文件的完整 uri。

以上是关于将 blob 从私有 blob 容器复制到 Azure 中的公共 blob 容器的主要内容,如果未能解决你的问题,请参考以下文章

使用 Nodejs 将文件从 Azure 存储 blob(容器)复制到 Azure 文件共享

使用python将文件从blob容器复制到另一个容器

是否可以将容器的整个 blob(具有文件)复制到 java 中的另一个订阅容器 blob

Azure Blob - ASP.NET,将 Blob 复制到同一集合中

使用 powershell 在 Azure 中不同订阅的存储容器之间复制 blob

是否可以在私有天蓝色存储容器中有一个公共 blob