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

Google Storage存储桶目录下文件下载抛出GoogleApiException问题求助

GCS子目录文件下载报错修复方案

核心问题1:对象名前导斜杠错误

GCS的对象名不存在「根目录斜杠」的概念,你配置的/earnings/earnings_202107_212121-10.zip会被GCS判定为对象名本身包含开头的斜杠,和实际存储的无前置斜杠的对象名earnings/earnings_202107_212121-10.zip完全不匹配,因此触发资源找不到的API异常:

Exception thrown: 'Google.GoogleApiException' in mscorlib.dll

存储桶实际结构如下:
存储桶结构示意图

修复方式

直接去掉对象名开头的/即可:

// 根目录对象写法(无需修改)
var bucket_name = "digital-jorgesys-454.appspot.com";            
var object_name = "earnings_202107_212121-10.zip";     

// 子目录对象正确写法
var bucket_name = "digital-jorgesys-454.appspot.com";            
var object_name = "earnings/earnings_202107_212121-10.zip";

其他隐含问题修复

1. 本地子目录自动创建

当前代码直接使用GCS路径拼接本地存储路径,如果本地不存在对应子目录,会触发IO报错。需要在创建本地文件流前新增目录创建逻辑:

// 放在DownloadFile方法中创建FileStream的代码之前
var localFullPath = Path.Combine(LocalDownloadPath, filePathInGcs);
var localParentDir = Path.GetDirectoryName(localFullPath);
// 目录不存在则自动创建
if (!Directory.Exists(localParentDir))
{
    Directory.CreateDirectory(localParentDir);
}
var downloadStream = new FileStream(localFullPath, FileMode.Create, FileAccess.Write);

2. 异步异常捕获修复

当前调用DownloadFile时未加await关键字,异步方法抛出的异常无法被外层catch捕获,不利于问题排查,修改调用逻辑:

try
{
    // 加await等待异步执行完成,异常可以被正常捕获
    await DownloadFile(GCSServiceAccountEmail, P12KeyFullPath, P12KeySecret, bucket_name, object_name);               
}
catch (AggregateException ex)
{
    foreach (var e in ex.InnerExceptions)
    {
        Console.WriteLine("DownloadFile ERROR: " + e.Message);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:00:04