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

如何使用C#从Azure Blob Storage检索XML文件并返回XML格式文件

C# 从Azure Blob Storage检索并返回XML文件实现方案

你原有代码存在3个核心问题:

  • 异步方法DownloadTextAsync()未加await,直接调用ToString()只会获取到Task类的默认描述文本,拿不到实际XML内容
  • 没有遍历传入的文件名列表,仅读取了单个固定Blob的内容
  • 用空格拆分XML内容的操作完全破坏了XML结构,不符合返回XML格式文件的需求

修正后代码(返回XML原始内容集合)

如果需要获取所有指定XML文件的原始格式内容,使用如下实现:

using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;

// 注意异步方法需要修改返回值为Task包装的集合
public async Task<List<string>> GetXmlFiles(List<string> xmlNames)
{
    string storageConnectionString = "你的存储连接字符串";
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    CloudBlobContainer container = blobClient.GetContainerReference("你的容器名称");
    
    List<string> xmlFiles = new List<string>();
    // 遍历所有传入的文件名逐个读取
    foreach (var fileName in xmlNames)
    {
        CloudBlockBlob blob = container.GetBlockBlobReference(fileName);
        // 加await获取实际XML文本内容
        string xmlContent = await blob.DownloadTextAsync();
        xmlFiles.Add(xmlContent);
    }
    return xmlFiles;
}

ASP.NET Core场景直接返回可下载XML文件

如果是在Web接口中需要返回XML文件供前端下载,可使用如下接口实现:

[HttpGet("download-xmls")]
public async Task<IActionResult> DownloadXmlFiles([FromQuery] List<string> xmlNames)
{
    string storageConnectionString = "你的存储连接字符串";
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageConnectionString);
    CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
    CloudBlobContainer container = blobClient.GetContainerReference("你的容器名称");

    // 单文件返回示例,多文件可打包为zip返回
    var firstFileName = xmlNames.FirstOrDefault();
    if (string.IsNullOrEmpty(firstFileName))
        return BadRequest("未指定文件名");
    
    CloudBlockBlob blob = container.GetBlockBlobReference(firstFileName);
    Stream blobStream = await blob.OpenReadAsync();
    // 设置正确的XML MIME类型
    return File(blobStream, "application/xml", firstFileName);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:06:03