Javascript 如何使用node.js将blob移动到Azure中的子目录中

Javascript 如何使用node.js将blob移动到Azure中的子目录中,javascript,node.js,azure,azure-blob-storage,azure-sdk,Javascript,Node.js,Azure,Azure Blob Storage,Azure Sdk,我有一个node.js服务,它应该从azure加载文件,处理它,并在完成后将其移动到同一容器中的“完成”子文件夹 我在文档中翻了一个多小时,找不到任何方法来复制或重命名blob,因为如果我从一开始就将其创建为done/blob name,它将在子文件夹中直观地显示它,因此重命名也可以做到这一点(我知道它是如何工作的,这对我来说很好,我通过忽略所有以他们的名义包含done/的人来过滤blob) 唯一足够接近的是startCopyFromURL,它是“blob”类的一个成员,但我不知道如何使用它——

我有一个node.js服务,它应该从azure加载文件,处理它,并在完成后将其移动到同一容器中的“完成”子文件夹

我在文档中翻了一个多小时,找不到任何方法来复制或重命名blob,因为如果我从一开始就将其创建为done/blob name,它将在子文件夹中直观地显示它,因此重命名也可以做到这一点(我知道它是如何工作的,这对我来说很好,我通过忽略所有以他们的名义包含done/的人来过滤blob)

唯一足够接近的是startCopyFromURL,它是“blob”类的一个成员,但我不知道如何使用它——因为我只提供了一个源,而没有目标……我所要求的只是一个简单的函数copyBlob(sourceBlobURL,dstBlobUrl)--

奇怪的是,Azure门户没有提供任何复制/重命名选项,但有一种叫做“存储资源管理器”(可通过Azure门户访问)的东西据我所知,它是一个GUI,支持Blob上的高级操作,包括复制操作和子文件夹管理

我使用(有点)新的V10SDK(),在我的脚本中只需要@azure/storage blob部分

非常感谢你的帮助


更新:我确实找到了一个名为“StartCopySync”的方法的引用,但我在网上找到的所有示例都是从sdk到不同语言(例如c#)的,并且已经有1-2年的历史了,而新的JS sdk从几周前(7月19日)起才正式成为JS的主要sdk。在新的JS sdk中找不到任何关于此功能的内容。

您不能重命名blob;您只能将blob复制到新blob(或上载新blob)

关于子目录:没有这样的东西。层次结构是:

account / container / blob
在blob的名称中,看起来像子目录的只是路径字符。例如:

https://myblobs.blob.core.windows.net/mycontainer/images/image1.jpg
实际上是一个名为“images/image1.jpg”的blob

各种blob列表调用允许您使用分隔符进行过滤,从而产生子目录的错觉

因此,在您的情况下,您需要将“已处理”blob上载到新blob(无论是在同一容器中还是在新容器中)。如果上载到同一个容器,则需要提供一个新名称。如果为已处理的blob使用不同的容器,则无需担心提供不同的blob名称。

您可以使用,正如您自己假设的那样。源是第一个参数,目标是用于调用此函数的blob对象hod.那么,流程是这样的:

  • 创建目标Blob对象(空,包括您需要的所有子文件夹,如
    done
  • 在其上调用
    startCopyFromURL
    ,提供源URL
  • 等待承诺的解决

  • 可以找到一个非javascript示例。

    由于子目录的错觉,如果我以/done/blobName的名称将其上载到同一个容器中,则应该没有问题否?@Gibor-正确-如果您将新的
    image1.jpg
    命名为
    https://.../processed/image1.jpg
    你会很好的。和那个讨厌的m在一起花了一些时间icrosoft文档,但我终于收到了。感谢您的澄清!