【问题标题】:Storing blob in folder in blob container将 blob 存储在 blob 容器中的文件夹中
【发布时间】:2023-03-03 10:42:01
【问题描述】:

我正在重写 node.js/express 中的后端调用,该调用从 Azure 存储中的大文件夹下载文件,然后调整图像大小并将其上传到同一 blob 容器中的另一个文件夹。只是一个不同的文件夹。根据请求下载图片非常简单,但是当我尝试上传时,我找不到在文件夹中上传的选项。就在容器的根目录中。

我尝试在 URL 中手动添加文件夹。然而,图书馆不允许我改变它,因为它是一个常数。在文件名中添加“/”会将“/”替换为“%2F”(这也适用于 blob 容器名称)。

我正在使用库 @azure/storage-blob

const containerName = 'test/Small';

// upload file
BlockBlobURL.fromContainerURL(
    ContainerURL.fromServiceURL(serviceURL, containerName),
    (req.body.NewFileName != null ? req.body.NewFileName : req.body.FileName) + '.png'
);

网址最终是

https://*****.blob.core.windows.net/test%2FSmall/test.png

代替

https://*****.blob.core.windows.net/test/Small/test.png

【问题讨论】:

    标签: node.js azure-blob-storage


    【解决方案1】:

    实际上,Azure Blob Storage 中没有文件夹,所有 Blob 都存储在容器下的平面层次结构中。因此,您可以直接指定Small/test.png作为上传的blob名称。

    【讨论】:

    • 如果我使用 .fromServiceUrl() 和 .fromContainerUrl() 函数,lib @Azure/storage-blob 会过滤掉 / 并用 %2F 替换它。那是行不通的。我试过了。我最终初始化了类 ContainerURL 和 BlockBlobURL 而没有绕过过滤器的函数。这似乎解决了它。
    【解决方案2】:

    如果我使用 .fromServiceUrl() 和 .fromContainerUrl() 函数,lib @Azure/storage-blob 会过滤掉 / 并用 %2F 替换它。那是行不通的。我试过了。

    我最终初始化了类 ContainerURL 和 BlockBlobURL 而没有绕过过滤器的函数。这似乎解决了它。

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 1970-01-01
      • 2018-01-10
      • 2016-04-03
      • 2018-04-13
      • 2022-11-30
      • 2016-09-21
      • 2021-08-31
      • 2021-10-16
      相关资源
      最近更新 更多