You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Microsoft.Azure.Storage.Blob从URL读取Blob内容?

通过SAS URL读取Azure Blob内容(基于Microsoft.Azure.Storage.Blob库)

核心实现思路

你使用的是旧版Microsoft.Azure.Storage.Blob SDK(包含CloudBlockBlob类),可以直接通过SAS URL实例化CloudBlockBlob对象,无需依赖容器或存储账户连接字符串,即可调用读取方法获取Blob内容。

代码示例

1. 直接读取文本内容(同步/异步)

针对你上传的application/fhir+ndjson文本格式Blob,可使用DownloadText或异步的DownloadTextAsync方法:

using Microsoft.Azure.Storage.Blob;

// 替换为你的Blob SAS URL
string blobSasUrl = "https://youraccount.blob.core.windows.net/yourcontainer/yourblob.ndjson?sv=2021-06-08&ss=bfqt&srt=sco&sp=rwdlacupiytfx&se=2024-12-31T23:59:59Z&st=2024-01-01T00:00:00Z&spr=https&sig=xxxxxx";

// 用SAS URL实例化CloudBlockBlob
CloudBlockBlob blockBlob = new CloudBlockBlob(new Uri(blobSasUrl));

// 同步读取文本内容
string blobContent = blockBlob.DownloadText();
// 此处对blobContent做进一步处理(如解析NDJSON格式的FHIR资源)

// 异步版本(推荐在异步方法中使用)
// string blobContentAsync = await blockBlob.DownloadTextAsync();

2. 流式读取(适合大文件或逐行处理场景)

若Blob体积较大,流式读取更节省内存,尤其适合逐行处理FHIR NDJSON内容:

using Microsoft.Azure.Storage.Blob;
using System.IO;

string blobSasUrl = "你的Blob SAS URL";
CloudBlockBlob blockBlob = new CloudBlockBlob(new Uri(blobSasUrl));

// 打开流读取内容
using (Stream blobStream = blockBlob.OpenRead())
using (StreamReader reader = new StreamReader(blobStream))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // 对单条FHIR资源JSON做业务处理
        ProcessFhirResource(line);
    }
}

// 自定义FHIR资源处理方法示例
void ProcessFhirResource(string resourceJson)
{
    // 此处编写你的业务逻辑,如反序列化为FHIR对象、校验等
}

注意事项

  • 确保SAS URL包含读取权限(权限参数sp需包含r,如sp=rwdl),否则会抛出权限不足异常。
  • 使用异步方法时,需确保所在方法标记为async并正确使用await。
  • 若Blob为私有且无有效SAS权限,无法直接通过URL读取,需改用存储账户连接字符串或Azure AD身份验证方式。

内容的提问来源于stack exchange,提问作者Sri Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 03:20:43