我正在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
答案 0 :(得分:0)
实际上,Azure Blob存储中没有文件夹,所有Blob均以平面层次结构存储在容器下。因此,您可以直接指定Small/test.png
作为上传的Blob名称。
答案 1 :(得分:0)
如果我使用.fromServiceUrl()和.fromContainerUrl()函数,则lib @ Azure / storage-blob过滤/并将其替换为%2F。那不行我已经尝试过了。
我最终初始化了ContainerURL和BlockBlobURL类,而该函数没有绕过过滤器。那似乎解决了。