如何通过 URL 下载 Azure BLOB 存储文件
Posted
技术标签:
【中文标题】如何通过 URL 下载 Azure BLOB 存储文件【英文标题】:How to download an Azure BLOB Storage file via URL 【发布时间】:2019-11-05 15:49:06 【问题描述】:我们在 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 存储文件?
【问题讨论】:
【参考方案1】:GetBlockBlobReference
将文件名作为其构造函数中的参数,而不是 URL。
要通过 URL 下载 Azure BLOB 存储项目,您需要使用项目的 URL 自己实例化 CloudBlockBlob
:
var blob = new CloudBlockBlob(new Uri(pdfFileUrl), cloudStorageAccount.Credentials);
然后可以使用您最初发布的代码下载此blob
。
【讨论】:
以上是关于如何通过 URL 下载 Azure BLOB 存储文件的主要内容,如果未能解决你的问题,请参考以下文章