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

如何使用python-gitlab API正确上传存储GitLab二进制文件?

解决方案

你遇到的问题是提交请求的参数名填写错误导致的:GitLab Commits API 要求标识内容编码的字段是 encoding,而非你代码里写的 encode,因此GitLab没有识别到你传入的是base64编码的二进制内容,直接将base64字符串作为普通文本存储,就出现了你看到的现象。

你还需要修正一个代码逻辑问题:gitlab.Gitlab() 返回的是全局GitLab实例对象,需要先调用 projects.get() 获取对应项目的实例,才能调用项目下的commits接口,否则会触发404错误。

修正后的完整可运行代码如下:

import gitlab
import base64

# 初始化GitLab连接
gl = gitlab.Gitlab("你的GitLab实例地址", private_token="你的访问TOKEN")
# 替换为你的项目路径或者数字ID
project = gl.projects.get("namespace/project_name")

# 读取二进制文件并做base64编码
with open("my_file.o", 'rb') as f:
    bin_content = base64.b64encode(f.read()).decode()

# 构造提交数据
data = {
    'branch': 'main',
    'commit_message': '上传二进制文件',
    'actions': [
        {
            'action': 'create',
            'file_path': 'my_file.o',
            'content': bin_content,
            'encoding': 'base64'
        }
    ]
}

# 提交到仓库
project.commits.create(data)

如果需要更新已有的二进制文件,将action字段的值改为update即可;如果需要批量上传多个文件,往actions数组中添加多个文件配置项即可,单次提交最多支持同时处理100个文件。
这种实现方式和GitLab网页端上传文件的底层逻辑完全一致,上传后的文件会以原始二进制格式正常存储。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:15:04