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

如何使用Python结合MediaIoBaseDownload实现谷歌网盘断点续传?

实现MediaIoBaseDownload断点续传

要实现断点续传,核心是获取已下载文件的大小,并通过HTTP Range 请求头告诉服务器从该位置开始继续传输,同时用ab模式打开本地文件追加写入。具体步骤如下:

  1. 计算已下载字节数
    先检查本地文件是否存在,获取其大小(即已下载的字节数):

    import os
    import io
    from googleapiclient.http import MediaIoBaseDownload
    
    fname = "your_large_file.ext"
    downloaded_bytes = os.path.getsize(fname) if os.path.exists(fname) else 0
    
  2. 设置Range请求头
    在创建媒体请求时,添加Range头,指定从已下载的位置开始下载:

    # 假设你已经初始化了drive_service
    request = drive_service.files().get_media(fileId="your_file_id")
    request.headers["Range"] = f"bytes={downloaded_bytes}-"
    
  3. 以追加模式打开文件并启动续传
    用ab模式打开文件,创建MediaIoBaseDownload对象后正常执行下载循环:

    fh = io.FileIO(fname, mode='ab')
    downloader = MediaIoBaseDownload(fh, request)
    
    done = False
    while done is False:
        status, done = downloader.next_chunk()
        print(f"Download progress: {int(status.progress() * 100)}%")
    

注意事项

  • 确保目标服务器支持HTTP Range请求(Google Drive API是支持的),如果不支持,该方法会失效,需重新完整下载。
  • 若下载中断,再次运行上述代码即可自动从断点处继续。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:33:13