Alex Spelt
Alex Spelt

Reputation: 63

Storing blob in folder in blob container

I'm rewriting a backend call in node.js/express that downloads a file from a large folder in Azure Storage and then I resize the image and upload it to another folder in the same blob container. Just a different folder. Downloading the pictures is pretty straight forward with request but when I try to upload I can't find an option to upload in a folder. just in the root of the container.

I've tried to add the folder in the URL manually. however, the library won't allow me to change it since it's a constant. adding a '/' in the name of the file will replace the '/' with '%2F' (this also counts for the blobcontainer name).

I'm using the library @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'
);

The URL ends up being

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

Instead of

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

Upvotes: 0

Views: 1414

Answers (2)

Alex Spelt
Alex Spelt

Reputation: 63

The lib @Azure/storage-blob filters the / out and replaces it with %2F if I use the .fromServiceUrl() and .fromContainerUrl() function. That doesn’t work. I’ve tried that.

I ended up initializing the classes ContainerURL and BlockBlobURL without the function bypassing the filter. that seemed to fix it.

Upvotes: 0

Zhaoxing Lu
Zhaoxing Lu

Reputation: 6467

Actually, there aren't folders in Azure Blob Storage, all blobs are stored in a flat hierarchy under a container. Therefore, you can directly specify Small/test.png as the uploaded blob name.

Upvotes: 1

Related Questions