- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有使用 BlobClient.DownloadAsync()
的生产代码使用 Azure.Storage.Blobs
从 Azure Blob 存储下载文件的方法nuget 包 v12.8,它似乎工作得很好。但是,我升级了 nuget 包,并准备编写一些新代码来处理 zip 文件,这些代码也依赖于下载来提取 zip...但注意到 Storage SDK 的最新 API 中出现了一些变化。
除了来自 Microsoft 以及互联网的几乎所有示例之外,都略有不正确,因为该方法包装了返回的 BlobDownloadInfo
进入Response<T>
对象 - 强制您调用 .Value
首先,他们似乎也使用上述方法来下载 blob 文件 - 但我无法再通过 Intellisense 找到该方法。
当我查看源代码时,我看到了 BlobBaseClient.DownloadAsync()
方法,我看到它用 [EditorBrowsable(EditorBrowsableState.Never)]
装饰,这意味着这个 API 可能会通过向开发人员隐藏它而慢慢被拿走,但不会破坏现有代码或标记为 Obsolete
。但我找不到任何可以肯定指出这一点的文章/问题/文档。看起来像这样:
话虽这么说……如果目标是,从 v12.9 开始使用 .NET SDK 以异步方式从 Azure Blob 存储( block blob)下载文件的方式是什么通过 ASP.NET Controller 操作(REST 端点)将其“流”到浏览器等客户端(不保存到服务器上的本地文件)?
BlobClient
上似乎有几个可用的“下载”API ,但他们的文档有些模糊或不明确,并且 MS 文档似乎没有进一步澄清:
此外,如果尝试执行一些其他操作,而不是通过 REST API 下载到浏览器客户端,例如,如果您正在解压缩 blob 文件并且提取的文件也将进入 blob 存储,那么是否可以最好不要下载,而是通过 OpenReadAsync()
打开它?
最佳答案
对于其他想要了解如何将文件从 Azure Blob 存储流式传输/下载到对象的人来说,OP Github issue是我遇到过的最好的文档。
简而言之,主要使用方法:
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)
不要使用:
DownloadAsync() - replaced by DownloadStreamingAsync()
当您只想从 Blob 存储下载文件时:
DownloadToAsync() - downloads a blob using parallel requests, and writes the content to destination
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>();
关于.net - Azure Blob 存储 SDK v12 - BlobClient DownloadAsync 消失了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68070143/
我最近一直在学习 Azure,发现有 2 个用于处理 blob 的类:CloudBlobClient 和 BlobClient。 CloudBlobClient 来自 Microsoft.Azure.
我有一个具有 Blob 触发器的 Azure 函数,在我的函数方法参数中,我通过 BlobClient 公开 Blob 本身以及上传的文件的名称。 [FunctionName("MyFunc")]
我有一个具有 Blob 触发器的 Azure 函数,在我的函数方法参数中,我通过 BlobClient 公开 Blob 本身以及上传的文件的名称。 [FunctionName("MyFunc")]
我有以下代码将文件上传到我的 Azure 存储: 读取文件流如下: FileStream fileStream = File.OpenRead(filePath); 并传递给函数=> publ
我对 C# azure sdk 感到困惑。 我想要实现的目标。 将文件从我的计算机上传到 azure 中的文件夹。 例如 本地 MyFiles -- Folder1 -- file.t
我想将图像上传到Azure,当正确上传后我想删除原始的本地镜像。为此,我需要知道上传何时成功/完成。 docs的BlobClient.uploadWithResponse提及它返回Response 。
我想将图像上传到Azure,当正确上传后我想删除原始的本地镜像。为此,我需要知道上传何时成功/完成。 docs的BlobClient.uploadWithResponse提及它返回Response 。
我见过的大多数(全部?)Azure 存储 Python SDK 示例都演示了创建一个 BlobServiceClient,然后创建一个 BlobClient 来上传/下载 blob( ref1 , r
我想创建一个 Azure SDK BlobClient知道 Blob Uri。我可以这样做: StorageSharedKeyCredential storageCredential = ne
我正在尝试通过内存流将 JSON 上传到 Azure blob。当我调用 UploadAsync 时,我的应用程序挂起。如果我将 UploadAsync 调用移到 StreamWriter 大括号之外
我正在尝试使用 BlobClient 从 Azure 存储中删除多个 Blob blob class . private static void DeleteBlobsFromContainer(Ur
我正在尝试从连接到快速 Wifi 连接的手机上传 200 MB 的视频文件。我正在使用适用于 .NET 的 Azure 存储 SDK v12,但以下代码在上传进度约为 30% 后不断重置自身。当重置发
我注意到在调试跟踪中我当前的方法正在触发 blob 上的 HEAD - 大概是为了检查它是否已经存在。我知道它永远不会,如果它确实存在我想覆盖。我只想直接 PUT 来缩短几毫秒,重要的是减少 Appl
我正在尝试从连接到快速 Wifi 连接的手机上传 200 MB 的视频文件。我正在使用适用于 .NET 的 Azure 存储 SDK v12,但以下代码在上传进度约为 30% 后不断重置自身。当重置发
我注意到在调试跟踪中我当前的方法正在触发 blob 上的 HEAD - 大概是为了检查它是否已经存在。我知道它永远不会,如果它确实存在我想覆盖。我只想直接 PUT 来缩短几毫秒,重要的是减少 Appl
在 Azure Blob 存储中,这两个不同对象上的这两种方法有什么区别?什么时候使用 ContainerInstance.ListBlobsSegmented() 与 CloudBlobClient
我正在创建一个 Azure Function 作为“中间件”,以便最终用户直接在浏览器中打开 Azure Blob 存储中的文件。我使用 AAD 来保护 Azure Function,并创建 SAS
在 Azure 存储 v12 SDK 中,如何使用 Blob URI 和 BlobServiceClient 创建 Blob 客户端? 在 v11 中,我们可以通过以下方式做到这一点: var clo
在 Azure 存储 v12 SDK 中,如何使用 Blob URI 和 BlobServiceClient 创建 Blob 客户端? 在 v11 中,我们可以通过以下方式做到这一点: var clo
我正在从 Azure SDK 11 转换为 12,但在 C# 库中找不到 CloudBlockBlob.IsSnapshot() 的等效项。我怎样才能做等价的? 最佳答案 我想 storage sdk
我是一名优秀的程序员,十分优秀!