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

如何使用cURL将本地文件正确上传至GitHub仓库?

cURL上传本地文件到GitHub仓库的正确写法

你的现有命令存在3处语法错误,修正后即可支持docx、jpeg等任意格式文件的上传,本地文件路径直接填写系统可识别的绝对/相对路径即可。

现有命令的错误点

  • openssl base64读取文件的参数为-in,你写的in属于参数错误;$/temp/hello.txt路径格式非法,直接替换为本地真实路径即可,比如Linux/macOS下的/tmp/hello.jpeg、Windows下的C:\Users\xxx\demo.docx、当前执行目录下的./test.png都可识别。
  • GitHub Contents API要求content字段为base64编码后的字符串,你给该字段值额外包裹了一层{},不符合接口格式要求。
  • Shell中单引号包裹的内容不会执行$(...)命令替换逻辑,会直接把命令字符串作为参数传递,导致无法读取到文件的base64编码结果。

修正后可直接运行的命令(Linux/macOS)

# 按需修改以下配置项
LOCAL_FILE_PATH="/temp/hello.txt"  # 本地待上传文件的真实路径,支持任意格式
REMOTE_FILE_PATH="hello.txt"       # 文件上传到仓库后的存储路径,支持子目录如"docs/demo.docx"
COMMIT_MESSAGE="Upload this file to Git"
COMMITTER_NAME="Bon"
COMMITTER_EMAIL="bon@bon.com"
GITHUB_TOKEN="<替换为你的GitHub个人访问令牌>"
TARGET_REPO="BT23/demo-repo"

curl -X PUT \
     -H "Accept: application/vnd.github+json" \
     -H "Authorization: token $GITHUB_TOKEN" \
     "https://api.github.com/repos/$TARGET_REPO/contents/$REMOTE_FILE_PATH" \
     -d "{
       \"message\":\"$COMMIT_MESSAGE\",
       \"committer\":{\"name\":\"$COMMITTER_NAME\", \"email\":\"$COMMITTER_EMAIL\"},
       \"content\":\"$(openssl base64 -A -in "$LOCAL_FILE_PATH")\"
     }"

注意事项

  • 该接口仅支持上传100MB以内的文件,超过大小限制的文件需要对接Git LFS接口上传。
  • 上传docx、jpeg、zip等二进制文件无需额外调整参数,接口会自动识别文件类型。
  • 请确保你使用的GitHub令牌拥有目标仓库的写入权限,否则会返回403/404错误。
  • Windows PowerShell环境下需要替换base64编码命令,将$(openssl base64 -A -in "$LOCAL_FILE_PATH")替换为[Convert]::ToBase64String([IO.File]::ReadAllBytes($LOCAL_FILE_PATH))即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:06:19