Thi*_*lva 8 .net azure azure-storage azure-sdk-.net azure-blob-storage
我有生产代码,该BlobClient.DownloadAsync()
代码使用 nuget 包 v12.8 从 Azure Blob 存储下载文件的方法Azure.Storage.Blobs
,并且它似乎工作得很好。但是,我升级了 nuget 包,并准备编写一些新代码来处理 zip 文件,这些代码也依赖于下载来提取 zip...但注意到 Storage SDK 的最新 API 中存在一些变化。
除了来自 Microsoft 以及互联网的几乎每个示例之外,由于该方法将返回的内容包装BlobDownloadInfo
到一个Response<T>
对象中,所以略有不正确 - 迫使您首先调用.Value
,他们似乎也使用上述方法来下载 blob 文件 -但我无法再通过智能感知找到该方法。
当我查看BlobBaseClient.DownloadAsync()
方法的源代码时,我发现它用 装饰[EditorBrowsable(EditorBrowsableState.Never)]
,这意味着该 API 可能会通过向开发人员隐藏它而慢慢被拿走,但不会破坏现有代码或标记为Obsolete
。但我找不到任何可以肯定指出这一点的文章/问题/文档。看起来是这样的:
话虽如此......如果目标是“流”,那么人们应该使用 v12.9 版本的 .NET SDK 以异步方式从 Azure Blob 存储(块 blob)下载文件的方式是什么它通过 ASP.NET 控制器操作(REST 端点)传输到浏览器等客户端(不保存到服务器上的本地文件)?
上似乎有几个可用的“下载”API BlobClient
,但它们的文档有些模糊或不明确,并且 MS 文档似乎没有进一步澄清:
此外,如果尝试执行一些其他操作,而不是通过 REST API 下载到浏览器客户端,例如,如果您正在解压缩 blob 文件并且提取的文件也将进入 blob 存储,那么最好不要下载而是通过OpenReadAsync()
?打开它
Tar*_*tar 11
对于其他试图弄清楚如何将文件从 Azure Blob 存储流式传输/下载到对象中的人来说,OP Github 问题是我遇到的最好的文档。
简而言之主要使用方法:
DownloadContentAsync() - preferred way to fetch blobs that fit in memory
DownloadStreamingAsync() - stream when bandwidth adequate (otherwise OpenReadAsync)
OpenReadAsync() - fetches buffered chunks when bandwidth inadequate or consumer slow (otherwise DownloadStreamingAsync)
Run Code Online (Sandbox Code Playgroud)
不使用:
DownloadAsync() - replaced by DownloadStreamingAsync()
Run Code Online (Sandbox Code Playgroud)
当您只想从 Blob 存储下载文件时:
DownloadToAsync() - downloads a blob using parallel requests, and writes the content to destination
Run Code Online (Sandbox Code Playgroud)
DownloadContentAsync 非常有用。
对于 JSON 文件和其他小 blob,这可以方便地以 BinaryData 形式提供数据,使您可以轻松检索常用的基元(字符串、流、字节)。
例子:
BlobContainerClient containerClient = new BlobContainerClient(_settings.ConnectionString, _settings.ContainerName);
var blobClient = containerClient.GetBlobClient($"{folderName}/{fileName}");
BlobDownloadResult download = await blobClient.DownloadContentAsync();
MyJSONData json = download.Content.ToObjectFromJson<MyJSONData>();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5234 次 |
最近记录: |