.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
相关产品推荐
相关产品推荐

