c# - 如何通过 URL 下载 Azure BLOB 存储文件

标签 c# azure azure-storage azure-blob-storage

我们在 Azure 存储上创建了一个文件夹结构,如下所示:

parentcontainer -> childcontainer -> {pdffiles are uploaded here}

我们有存储的 .pdf 文件的 URL。我们不想硬编码任何容器名称,只需使用其 URL 下载文件即可。

我们目前的尝试:

CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(StorageConnectionString);
CloudBlobClient blobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = blobClient.GetRootContainerReference();
CloudBlockBlob blockBlob = cloudBlobContainer.GetBlockBlobReference(pdfFileUrl);

var blobRequestOptions = new BlobRequestOptions
{
    RetryPolicy = new NoRetry()
};

// Read content
using (MemoryStream ms = new MemoryStream())
{
    blockBlob.DownloadToStream(ms, null, blobRequestOptions);
    var array = ms.ToArray();
    return ms.ToArray();
}     

但是我们在这里收到“400 Bad Request”:

 blockBlob.DownloadToStream(ms, null, blobRequestOptions);

我们如何仅使用 URL 来下载 Azure BLOB 存储文件?

最佳答案

GetBlockBlobReference将文件名作为其构造函数中的参数,而不是 URL。

为了通过 URL 下载 Azure BLOB 存储项目,您需要实例化 CloudBlockBlob您自己使用该项目的 URL:

var blob = new CloudBlockBlob(new Uri(pdfFileUrl), cloudStorageAccount.Credentials);

然后可以使用您最初发布的代码下载此blob

关于c# - 如何通过 URL 下载 Azure BLOB 存储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56726380/

相关文章:

c# - 在 WPF 中创建 Windows.UI.Composition.Compositor 的实例会抛出 0x80070005 访问被拒绝

c# - 存储六个单位的最小可能方式

azure - 如何将spark-csv包添加到Azure上的jupyter服务器以与iPython一起使用

azure - 如何在微服务/无服务器架构中创建文件缓存层

c# - 如果目标中存在 Blob,如何覆盖 Blob

C# 应用程序需要在 Citrix 环境中引用远程工作站

c# - 使用 NAudio 将 WAV 流转换为 Opus

Azure AD Multi-Tenancy 应用程序 - 查找哪些租户提供了管理员同意

azure - 即使 Repo 中存在 package.json 文件,在 azure devops 中构建仍失败

c# - 使用 ASP.NET 和 MVC5 进行 DownloadRangeToStreamAsync 和文件保存