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

Google Cloud可恢复下载失效问题咨询

解决Google Cloud Storage可恢复下载失效的问题

嘿,我看你遇到了GCS可恢复下载失效的问题——刚好我之前也踩过类似的坑,核心问题其实是没启用MediaHttpDownloader的分块下载模式,再结合你的代码细节,咱们一步步来修复:

1. 开启分块下载(最关键的一步)

你的可恢复上传能按10MB分片正常续传,应该是上传时配置了分块大小,但下载时没做同样的设置。MediaHttpDownloader默认是单请求下载,这种模式下断网重试会从头开始,根本谈不上“可恢复”。

修改你的downloadToOutputStream方法,加上分块大小设置:

public void downloadToOutputStream(String bucketName, String objectName, OutputStream data) throws IOException, GeneralSecurityException {
 GoogleCredential credential = GoogleCredential.getApplicationDefault();
 if (credential.createScopedRequired()) {
 credential = credential.createScoped(StorageScopes.all());
 }
 HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
 HttpRequestInitializer httpRequestInitializer = new RetryHttpInitializerWrapper(credential);
 GenericUrl requestUrl = new GenericUrl(
 "https://www.googleapis.com/storage/v1/b/" + bucketName + "/o/" + objectName);
 MediaHttpDownloader downloader = new MediaHttpDownloader(httpTransport, httpRequestInitializer);

 // 启用分块下载,和上传保持一致的10MB分片大小
 downloader.setChunkSize(10 * 1024 * 1024); // 10MB
 
 downloader.setProgressListener(new CustomDownloadProgressListener());
 downloader.download(requestUrl, data);
}

2. 确认重试逻辑适配下载场景

你的RetryHttpInitializerWrapper写得没问题,已经覆盖了两类重试场景:

  • 遇到HTTP错误(比如5xx、429限流)时,HttpBackOffUnsuccessfulResponseHandler会自动退避重试
  • 遇到网络中断这类IO异常时,HttpBackOffIOExceptionHandler也会处理重试

而且当分块下载启用后,MediaHttpDownloader会自动在重试请求里加上Range头,从上次中断的位置继续下载,不需要你额外处理Range逻辑。

3. 额外的优化建议

  • 可以适当调大读取超时时间:你现在设置的是2分钟,如果网络波动大,可能还没下载完一个分块就超时了,建议改成5分钟试试:
request.setReadTimeout(5 * MILLIS_PER_MINUTE); // 5分钟读取超时
  • 注意你的OutputStream要支持续写:比如别用一次性的ByteArrayOutputStream(如果内存够另说),或者确保重试时流的位置是上次中断的地方——不过MediaHttpDownloader会自动处理流的位置,只要你不中途关闭或重置流就行。

测试验证

改完之后,你可以这样测:

  • 找个大于10MB的文件开始下载
  • 中途手动断开网络
  • 等个几秒再重新连网
  • 看进度监听的输出,应该会从断开时的进度继续走,而不是从头开始下载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:00:37