Javascript 将CloudBlockBlob作为可保存文件从.Net MVC 6下载到浏览器

Javascript 将CloudBlockBlob作为可保存文件从.Net MVC 6下载到浏览器,javascript,asp.net-mvc,azure-storage-blobs,asp.net-core-mvc,Javascript,Asp.net Mvc,Azure Storage Blobs,Asp.net Core Mvc,我试图为浏览器用户提供从列表中选择文件的功能,并将文件下载回用户作为文件下载 我的JavaScript如下所示: $scope.getFile=函数podUri,podName{ $http.get'api/getDharmaPod',{params:{containerName:$scope.selectedContainer,podName:podName}} .successfunction数据、状态、标题、配置{ $audio.textGot文件:; } .errorfunction数

我试图为浏览器用户提供从列表中选择文件的功能,并将文件下载回用户作为文件下载

我的JavaScript如下所示:

$scope.getFile=函数podUri,podName{ $http.get'api/getDharmaPod',{params:{containerName:$scope.selectedContainer,podName:podName}} .successfunction数据、状态、标题、配置{ $audio.textGot文件:; } .errorfunction数据、状态、标题、配置{ AlertGet错误:+状态; };
}; 我已经决定走另一条路,因为我似乎找不到解决办法

我的解决方案是使用blob的url直接从容器下载文件。我在控制器中生成了一个共享访问密钥,使其具有一定的安全性,如下所示:

public static string GetSharedAccessKey(string containerName)
{
    CloudStorageAccount storageAccount = GetAccount(_useDev);
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    CloudBlobContainer container = blobClient.GetContainerReference(containerName);
    SharedAccessBlobPolicy blobPolicy = new SharedAccessBlobPolicy
    {
        Permissions = SharedAccessBlobPermissions.Read,
        SharedAccessExpiryTime = DateTime.UtcNow.AddHours(1)
    };
    return container.GetSharedAccessSignature(blobPolicy);
}
这将返回一个访问密钥,该密钥可以附加到允许访问一小时的blob文件的“a”标记的href链接

我现在得到一个文件,浏览器按预期存储在下载目录中

允许直接访问存储帐户的结果对于服务器端应用程序也更为有效