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

Python3.9环境Google Cloud Functions如何将文件下载到根目录

Google Cloud Function 导入自定义字体文件操作方案

首先明确:你之前尝试通过控制台终端访问指定函数目录的操作无法实现,Cloud Function 是无状态 Serverless 服务,没有可供外部登陆操作的持久化文件系统,所有静态资源都需要在部署环节打包上传,运行时仅/tmp目录支持临时写入,实例销毁后写入内容会自动清除。

有两种可落地的实现方式:

方案1:部署时打包到代码包(优先推荐)

这种方式的字体随函数镜像固化,每次冷启动都不需要重复下载,调用效率最高,操作步骤如下:

  • 下载Balthazar字体的TTF/OTF格式源文件到本地
  • 在你本地的Cloud Function项目根目录下新建fonts文件夹,将字体文件存入该文件夹,最终目录结构参考:
函数根目录/
├── main.py(函数入口文件)
├── requirements.txt(依赖声明文件)
└── fonts/
    └── Balthazar-Regular.ttf
  • 部署函数时将整个目录一起上传:如果使用gcloud命令行部署,直接在项目根目录执行gcloud functions deploy命令即可自动打包上传;如果使用控制台部署,将整个目录打包为ZIP文件,在函数编辑页选择「上传ZIP包」选项上传即可。
  • 部署完成后,你在函数代码中可以直接通过相对路径./fonts/Balthazar-Regular.ttf调用该字体。

方案2:运行时动态下载到临时目录

如果不想把字体文件打包到代码包中,可以在函数执行逻辑中添加下载逻辑,将字体存到运行时临时目录/tmp下,示例代码如下:

import requests
import os

# 替换为你的函数入口名称
def handler(request):
    font_path = "/tmp/Balthazar-Regular.ttf"
    # 仅当本地临时目录无字体文件时下载,避免重复请求
    if not os.path.exists(font_path):
        # 替换为你的字体文件直链地址
        font_download_url = "你的字体直链地址"
        resp = requests.get(font_download_url, timeout=10)
        resp.raise_for_status()
        with open(font_path, "wb") as f:
            f.write(resp.content)
    # 后续业务逻辑中直接使用font_path路径调用字体即可
    return "执行完成"

注意事项

  • 打包到代码包的文件总大小不能超过Cloud Function的代码包限制:未压缩状态最大100MB,压缩ZIP包最大10MB,字体文件体积较小完全符合要求。
  • 运行时写入/tmp目录的文件仅在当前实例的生命周期内有效,实例销毁后会被清空,同项目不同函数、同一函数的不同实例之间的/tmp目录完全隔离。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:39:03