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

如何通过Google Drive URL在下载前获取远程文件大小?

当然可以!针对你给出的这种带export=download参数的Google Drive直链,我们完全可以在下载前获取文件大小,不用浪费带宽下载整个文件。下面分享几种实用的方法:

方法1:用curl发送HEAD请求(快速且无需编程)

这是最简便的方式,通过发送HEAD请求只获取响应头信息,不会下载文件内容:

# 发送HEAD请求并跟随重定向
curl -IL "https://drive.google.com/uc?export=download&id=54fs54dg45f1f112f2"

在返回的响应头里,找到Content-Length字段,它的值就是文件的字节数。比如:

Content-Length: 123456789

你可以把字节数转换成更易读的单位(比如除以1024*1024得到MB)。

⚠️ 注意:如果Google Drive返回了重定向(比如302状态码),一定要加-L参数跟随跳转,否则拿到的可能是跳转页面的大小,不是目标文件的。

方法2:处理需要人机验证的大文件

如果文件较大(通常超过100MB),Google Drive会要求“确认你不是机器人”,这时候直接发HEAD请求拿不到Content-Length。我们可以先获取验证token,再带token请求:

# 第一步:获取确认token
CONFIRM=$(curl -s "https://drive.google.com/uc?export=download&id=54fs54dg45f1f112f2" | grep -o 'confirm=[^&]*' | cut -d'=' -f2)

# 第二步:带token发送HEAD请求
curl -IL "https://drive.google.com/uc?export=download&id=54fs54dg45f1f112f2&confirm=$CONFIRM"

这时候就能在响应头里看到真实的文件大小了。

方法3:用Python编程实现(适合自动化场景)

如果你需要在脚本里自动获取文件大小,可以用requests库来处理:

import requests

def get_google_drive_file_size(url):
    # 先尝试直接发HEAD请求
    response = requests.head(url, allow_redirects=True)
    if 'Content-Length' in response.headers:
        return int(response.headers['Content-Length'])
    
    # 处理需要验证的情况
    session = requests.Session()
    initial_resp = session.get(url, allow_redirects=False)
    # 从cookie中提取验证token
    if 'confirm' in initial_resp.cookies:
        confirm_token = initial_resp.cookies['confirm']
        url_with_confirm = f"{url}&confirm={confirm_token}"
        resp = session.head(url_with_confirm, allow_redirects=True)
        if 'Content-Length' in resp.headers:
            return int(resp.headers['Content-Length'])
    
    # 无法获取的情况
    return None

# 使用示例
file_url = "https://drive.google.com/uc?export=download&id=54fs54dg45f1f112f2"
size_bytes = get_google_drive_file_size(file_url)
if size_bytes:
    print(f"文件大小:{size_bytes} 字节(约{size_bytes/1024/1024:.2f} MB)")
else:
    print("无法获取文件大小,可能文件需要登录权限或链接已失效")

注意事项

  • 如果文件是仅限特定用户访问的(比如未公开共享),上述方法都需要你先在请求中带上有效的登录cookie,否则无法获取真实大小。
  • 若链接无效或文件已被删除,响应头里不会有Content-Length字段,需要做好异常处理。
  • Content-Length返回的是字节数,换算单位时:1MB = 10241024字节,1GB = 10241024*1024字节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:29:42