.Net is an excellent framework - if you want proof of that, try to do, even very simple things, in Javascript. It feels a bit like getting out of a Tesla and travelling back in time to drive a Robin Reliant (I’ve never actually driven either of these cars, so I don’t really know if it feels like that or not!)
If you were to, for example, want to download a file from a Blob Storage container, in .Net you’re looking at about 4 lines of strongly typed code. There’s basically nothing to do, and it consistently works. If you want to do that in Javascript, there’s a Microsoft Javascript Library.
In said library, there is a function that should get a download URL for you; it’s named getUrl:
const downloadLink = blobService.getUrl(containerName, fileId, sasKey);
If you use this (at least, when I used this), it gave me the following error:
Signature did not match
To get around this, you can build the download link manually like this:
const downloadLink = blobUri + '/' + containerName + '/' + fileId + sasKey;
Comparing the two, the former appears to escape the question mark in the SAS.
To actually download the file, you can use this:
// https://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery
function downloadURI(uri, name)
{
var link = document.createElement("a");
link.download = name;
link.href = uri;
link.click();
}
And the final download function looks like this:
function downloadFile(sas, storageUri,
containerName, fileId, destinationFileName) {
var blobService = AzureStorage.Blob.createBlobServiceWithSas(storageUri, sas);
const downloadLink = storageUri +'/' + containerName + '/' + fileId + sas;
downloadURI(downloadLink, destinationFileName);
}