Tom Troughton
Tom Troughton

Reputation: 4345

Images uploaded to Azure blob storage unavailable when browsing by direct URL

I have uploaded a number of images to a Blob container on an Azure storage account of type StorageV2 (general purpose v2).

These were uploaded programmatically. Here's the code I used:

public Task CopyFile(string fileName, string targetPath)
{
    var blobRef = Container.GetBlockBlobReference(targetPath);

    blobRef.Properties.ContentType = GetContentType(fileName);

    return blobRef.UploadFromFileAsync(fileName);
}

public string GetContentType(string fileName)
{
    var provider = new FileExtensionContentTypeProvider();

    if (!provider.TryGetContentType(fileName, out var contentType))
    {
        contentType = "application/octet-stream";
    }

    return contentType;
}

Container is an initialized CloudBlobContainer instance.

When I use the Storage Explorer I can see the uploaded files. If I view the properties of any file it lists a Uri property. However, if I copy the value (a URL) and paste into a browser I see the following error page:

<Error>
    <Code>ResourceNotFound</Code>
    <Message>
        The specified resource does not exist. RequestId:12485818-601e-0017-6f69-56c3df000000 Time:2019-08-19T08:35:13.2123849Z
    </Message>
</Error>

But if I double-click the file in Storage Explorer it downloads the image correctly. The URL it uses is the same as the one I copied earlier as far as I could tell, except for some additional querystrings that look like this: ?sv=2018-03-28&ss=bqtf&srt=sco&sp=rwdlacup&se=2019-08-19T16:49:38Z&sig=%2FJs7VnGKsjplalKXCcl0XosgUkPWJccg0qdvCSZlDSs%3D&_=1566204636804

I assume this must mean my blobs are not publically available, but I can't find any setting that will make my images available publically at their known URI. Can anyone point me in the right direction here? Thank you.

Upvotes: 0

Views: 1080

Answers (2)

user10182254
user10182254

Reputation:

As far as I know, if you container's access level is Private, you use the direct url to access the blob then you will get the error. If you want to access it, you need to generate a SAS token for it. enter image description here

For more details, please refer to

https://learn.microsoft.com/en-us/azure/storage/blobs/storage-manage-access-to-resources https://learn.microsoft.com/en-us/azure/storage/common/storage-sas-overview

Upvotes: 1

Anton
Anton

Reputation: 447

Check the access level that set to your container. If that is a Private then you will have the error that you experiencing: ResourceNotFound

enter image description here

Upvotes: 2

Related Questions