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

Google Drive API C#文件下载速度异常缓慢,疑因强制病毒扫描

Google Drive API C#下载速度异常缓慢问题排查与求助

我正面临一个棘手问题:使用Google Drive API C#下载文件时速度异常缓慢,原因不明。

下载的文件均正常,无损坏或重复。测试用例为共享团队驱动器中的15个文件,大小在1MB-3MB之间,总大小28MB。我家带宽为3MB/s,使用Google Drive客户端下载仅需9-10秒,但通过API下载却耗时117秒。

我使用的是Google.Apis.Drive.v3包(版本信息如图所示)。

为排查问题,我将代码简化至最简形式:

Stopwatch sw = Stopwatch.StartNew();
foreach (GD.File file in files)
    await service.Files.Get(file.Id).DownloadAsync(new MemoryStream());
sw.Stop();

注:files包含上述15个测试文件,仅做简单遍历并调用DownloadAsync方法,未对数据流做任何操作,仅用于测试。尝试了同步、异步两种方式,结果一致。

其他测试情况:

  • 在100MB/s的高速网络环境下测试,耗时仍达114秒。
  • 尝试直接使用MediaDownloader类,但未能成功(下载的文件为空)。

编辑1:单文件下载进度追踪

测试单个63MB的文件,记录下载字节数与时间点的JSON数据:

Stopwatch sw = Stopwatch.StartNew();
JsonArray eventsJSON = new();
JsonObject fileJSON = new() {
        { "id", fileId },
        { "events", eventsJSON }
    };

FilesResource.GetRequest getRequest = service.Files.Get(fileId);
getRequest.MediaDownloader.ChunkSize = 262144;
getRequest.MediaDownloader.ProgressChanged += progress =>
{
    JsonObject eventJSON = new()
        {
            { "time", sw.ElapsedMilliseconds / 1000.0 },
            { "bytes", progress.BytesDownloaded  },
            { "finished", progress.Status == DownloadStatus.Completed }
        };
    eventsJSON.Add(eventJSON);
};
await getRequest.DownloadAsync(new MemoryStream());

sw.Stop();

fileJSON.Add(new KeyValuePair<string, JsonNode?>("finalTime", sw.ElapsedMilliseconds / 1000.0));
await hRes.WriteAsJsonAsync(fileJSON);

结果:调用下载函数后,30秒才开始接收字节,最终于57秒完成。实际下载时长27秒(符合文件大小的正常速度),但启动下载耗时30秒。

编辑2:网络抓包验证

使用Wireshark检查Google Drive API与程序之间的通信,结果一致:请求下载后有30秒无任何数据传输(时间值如图所示)。

编辑3:非C#客户端测试

  • 直接通过Postman发送请求,遇到完全相同的问题。
  • 使用Google开发者内置UI发送请求,耗时38秒(比之前快约20秒),但仍远慢于预期(最多应耗时25秒)。
  • 补充:仅获取文件内容的操作缓慢,其他操作如列出文件夹中的文件则几乎瞬间完成。

编辑4:找到问题根源

Google Drive API会对所有文件进行病毒扫描,包括压缩包内的文件。而我的用户仅上传Excel和PowerPoint文件(这类文件本质是压缩包)。

存在的差异:

  • 普通Google Drive客户端下载压缩包类文件时似乎会跳过病毒扫描,下载很快启动。
  • Google Drive API则会强制进行病毒扫描。

现在确定问题出在Google Drive API,请问是否有可行的解决办法?


内容的提问来源于stack exchange,提问作者Sébastien B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:05:23