当前位置: 首页 > 知识库问答 >
问题:

使用SAS从Azure Storage下载blob

全昊焜
2023-03-14

到目前为止,我有以下代码。我不知道如何处理生成的SAS令牌。如何从那里下载blob?

  [HttpGet]
    public async Task<IActionResult> Download([FromQuery] string blobUri)
    {
        BlobServiceClient blobServiceClient = new BlobServiceClient(this.configuration.GetConnectionString("StorageAccount"));


        // Create a SAS token that's valid for one hour.
        BlobSasBuilder sasBuilder = new BlobSasBuilder()
        {
            BlobContainerName = "my container name",
            BlobName = blobUri,
            Resource = "b",
            StartsOn = DateTimeOffset.UtcNow,
            ExpiresOn = DateTimeOffset.UtcNow.AddHours(1)
        };

        // Specify read permissions for the SAS.
        sasBuilder.SetPermissions(BlobSasPermissions.Read);

        // Use the key to get the SAS token.
        var sasToken = sasBuilder.ToSasQueryParameters(new Azure.Storage.StorageSharedKeyCredential("my account name", "my account key"));



        BlobClient blob = blobServiceClient.GetBlobContainerClient("my container name").GetBlobClient($"{blobUri}");
        await using (MemoryStream memoryStream = new MemoryStream())
        {
            await blob.DownloadToAsync(memoryStream);
           return File(memoryStream, "file");
        }

    }

共有1个答案

漆雕彬彬
2023-03-14

在官方的github repo中,您可以找到使用各种身份验证方式的很好示例。在示例中使用帐户密钥称为SharedKey。还有一个使用SAS令牌的示例--但您需要以某种方式生成这些令牌。通常使用帐户密钥...

另一个选择是使用基于AAD(Azure Active Directory)的Auth。在这种情况下,您不需要帐户密钥或SAS令牌。

有关各种示例,请参见以下内容:https://github.com/azure/azure-sdk-for-net/blob/master/sdk/storage/azure.storage.blobs/sample02_auth.cs

 类似资料:
  • 我正在使用JSCH从SFTP服务器下载文件。我使用单会话,多通道下载文件从不同文件夹位于SFTP。对于这个下载过程,我有一组排定的作业。每项工作将: 每次打开一个新通道()。通道名称:SFTP 使用方法获取要下载的文件总数的大小 如果size(Vector)大于零,则使用下载所有文件 最后关闭打开的通道。 在上面的过程中,大多数时候我得到的文件,找不到或没有这样的文件异常,并没有下载一些文件。 谁

  • 问题内容: 我正在尝试使用cURL从GitHub下载tarball ,但似乎没有重定向: 注意:wget对我有用: 但是我想使用cURL,因为最终我想用类似以下内容的内嵌来解压缩它: 我发现重定向后的URL原来是https://download.github.com/pinard- Pymacs-v0.24-beta1-0-gcebc80b.tar.gz ,但是我希望cURL足够聪明以至于可以理解

  • 问题内容: 如何将服务器中的文件下载到访问nodeJS服务器中页面的计算机上? 我正在使用ExpressJS,并且一直在尝试这样做: 但是我无法获取文件名和文件类型(或扩展名)。有人可以帮我吗? 问题答案: 更新资料 Express 为此提供了一个帮助,使生活更加轻松。 旧答案 就您的浏览器而言,该文件的名称仅为“下载”,因此您需要使用另一个HTTP标头为其提供更多信息。 您可能还想发送一个mim

  • 运行上述代码后出现以下错误。请帮忙做这件事。。正在将源和目标文件名作为S3属性中的参数传递。。。 在处理上述异常时,发生了另一个异常: 回溯(最后一次调用):文件“C:\Cloudtail\CT\SQL Scripts\python\GRN\u S3\u dwnld.py”,第17行,除了botocore.exception.ClientErrors as e:NameError:未定义名称“bo

  • API将返回CSV/PDF/XLS类型的文件 问题:

  • 我已使用IAM角色启动了一个ec2实例,并将以下策略与IAM角色关联。 然而,当我试图从ec2-实例中使用aws cli下载文件时,我一直拒绝访问。 当我模拟策略并对bucket中的对象执行操作时,会收到消息“allowed”。当我访问时,我可以看到正确的实例配置文件附在实例上http://169.254.254/latest-metadata/iam/info 我有什么明显的遗漏吗?

  • 是否可以一个google驱动器文件?如果是,提供的路径是什么?如果没有,是否有其他选择(bash或其他),这样我就可以避免将文件下载到我的本地并将其传输到远程?

  • 我需要使用他们的API和SAS系统连接到OpenWeatherMap。可以使用以下地址调用APIapi.openweathermap.org/data/2.5/weather?q=London, uk 我已经使用以下方法连接到另一个API: 因此,我认为我可以使用类似的代码,但没有任何运气。API调用的输出由下式给出: {“coord”:{“lon”:-0.13,“lat”:51.51},“wea