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

.NET桌面应用如何获取Firebase Storage完整文件元数据

如何从Firebase Storage获取完整文件元数据(.NET桌面应用)

我在基于.NET构建的桌面应用中,尝试通过HTTP GET请求从Firebase Storage获取文件元数据,但目前仅能获取文件名和存储桶信息,无法获取文件大小、最后修改时间等更多信息。以下是我的实现代码:

public async Task<JArray> ListFilesForUserAsync(string userFolder)
{
     string encodedFolderPath = Uri.EscapeDataString($"{userFolder}/");

     string requestUrl = $"{storageBaseUrl}?prefix={encodedFolderPath}";

     try
     {
         HttpResponseMessage response = await httpClient.GetAsync(requestUrl);

         if (response.IsSuccessStatusCode)
         {
             string responseBody = await response.Content.ReadAsStringAsync();
             var jsonResponse = JObject.Parse(responseBody);
             var item = (JArray)jsonResponse["items"];
            // GetFileMetadataAsync(userFolder); 
             return item;
         }
         else
         {
             Console.WriteLine($"Error listing files: {response.ReasonPhrase}");
             return null;
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine($"Exception occurred: {ex.Message}");
         return null;
     }
}

解决方法

Firebase Storage的列表文件API默认仅返回基础字段,需要通过fields参数显式指定要获取的元数据字段。具体修改如下:

1. 调整请求URL,添加fields参数

在请求URL中加入fields参数,指定需要返回的元数据字段(用逗号分隔)。如果需要获取所有可用字段,可使用items/*简化配置。

2. 修改后的完整代码

public async Task<JArray> ListFilesForUserAsync(string userFolder)
{
     string encodedFolderPath = Uri.EscapeDataString($"{userFolder}/");
     // 指定需要获取的元数据字段,按需增减
     string fields = "items(name,size,updated,contentType,bucket,md5Hash)";
     string requestUrl = $"{storageBaseUrl}?prefix={encodedFolderPath}&fields={fields}";

     try
     {
         HttpResponseMessage response = await httpClient.GetAsync(requestUrl);

         if (response.IsSuccessStatusCode)
         {
             string responseBody = await response.Content.ReadAsStringAsync();
             var jsonResponse = JObject.Parse(responseBody);
             var items = (JArray)jsonResponse["items"];
             return items;
         }
         else
         {
             Console.WriteLine($"Error listing files: {response.ReasonPhrase}");
             return null;
         }
     }
     catch (Exception ex)
     {
         Console.WriteLine($"Exception occurred: {ex.Message}");
         return null;
     }
}

3. 常用元数据字段说明

  • name: 文件完整路径/名称
  • size: 文件字节大小
  • updated: 最后修改时间(ISO格式字符串)
  • contentType: 文件MIME类型
  • md5Hash: 文件内容的MD5哈希值
  • bucket: 存储桶名称

如果需要获取全部元数据,直接将fields值设为items/*即可,API会返回该节点下的所有可用字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:10:01