在Blob容器中的文件夹中存储Blob

时间:2019-07-23 06:32:31

标签: node.js azure-storage-blobs

我正在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'
);

URL最终成为

  

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

代替

  

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

如果我使用.fromServiceUrl()和.fromContainerUrl()函数,则lib @ Azure / storage-blob过滤/并将其替换为%2F。那不行我已经尝试过了。

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