我有一个生产代码,它使用BlobClient.DownloadAsync()
方法从Azure Blob Storage下载一个文件,使用Azure.Storage.Blobs
nuget包v12.8,它似乎工作得很好。然而,我升级了nuget包,并准备编写一些新代码来处理zip文件,这也依赖于下载以提取zip......但注意到Storage SDK的最新API中的一些变化。
除了几乎每一个来自微软的样本,以及来自互联网,有点不正确,因为该方法将返回的BlobDownloadInfo
Package 到Response<T>
对象中-迫使您首先调用.Value
,他们似乎也使用上述方法下载blob文件-但我再也找不到通过Intellisense的方法。
当我查看将我带到BlobBaseClient.DownloadAsync()
方法的源代码时,我看到它用[EditorBrowsable(EditorBrowsableState.Never)]
装饰,这意味着这个API可能会通过隐藏它来慢慢地从开发人员中删除,但不会破坏现有代码或标记为Obsolete
。但我找不到任何文章/问题/文档肯定指向这一点。这就是它的样子:
话虽如此.....如果目标是通过ASP.NET控制器操作(REST端点)将文件“流式传输”到客户端(如浏览器等),那么使用.NET SDK从Azure Blob存储(块Blob)以异步方式下载文件的方式是什么?(不保存到服务器上的本地文件)?BlobClient
上似乎有几个可用的“下载”API,但它们的文档有些模糊或模棱两可,MS文档似乎没有进一步澄清:
- DownloadAsync()-基于所有示例/博客,标记为不可浏览,但实际上是不可浏览
- System. out. println()
- System. out. println()
- System. out. println()
- OpenReadAsync()
此外,如果尝试执行一些其他操作,而不是通过REST API下载到浏览器客户端,例如,如果您正在解压缩blob文件,并且提取的文件也将进入blob存储,那么不下载而是通过OpenReadAsync()
打开它会更好吗?
1条答案
按热度按时间oyjwcjzk1#
对于其他试图弄清楚如何将文件从Azure Blob存储流/下载到对象中的人来说,OP Github issue是我遇到的最好的文档。
简而言之,使用的主要方法:
请勿用途:
当您只想从blob存储中下载文件时:
DownloadContentAsync非常有用。
对于JSON文件和其他小的blob,它方便地提供了BinaryData形式的数据,允许您轻松地检索常用的原语(字符串、流、字节)。
示例: