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

使用GitHub API添加文件时遇cURL参数列表过长问题求解决办法

解决Bash脚本中cURL调用GitHub API上传大文件时“参数列表过长”的问题

问题根源是直接将Base64编码后的大文件内容作为cURL命令行参数传递,超出了Bash的命令行参数长度限制。以下是两种可行的解决方案:

方案一:使用临时文件构造请求体

  1. 对目标PDF文件进行Base64编码(禁用换行符,符合GitHub API要求),保存到临时文件:
base64 -w 0 your_file.pdf > encoded_content.txt
  1. 用jq构造包含编码内容的JSON请求体(通过文件读取内容,避免命令行参数过长):
jq -n \
  --arg path "repo/path/to/your/file.pdf" \
  --arg message "Add PDF file" \
  --rawfile content encoded_content.txt \
  '{path: $path, message: $message, content: $content}' > request_body.json
  1. 用cURL读取请求体文件发送PUT请求:
curl -X PUT \
  -H "Authorization: token YOUR_GITHUB_TOKEN" \
  -H "Accept: application/vnd.github+json" \
  https://api.github.com/repos/OWNER/REPO/contents/repo/path/to/your/file.pdf \
  --data @request_body.json

方案二:管道流式处理(无临时文件)

直接通过管道串联Base64编码、请求体构造和cURL请求,全程避免将大内容写入命令行参数:

base64 -w 0 your_file.pdf | jq -n \
  --arg path "repo/path/to/your/file.pdf" \
  --arg message "Add PDF file" \
  --rawfile content /dev/stdin \
  '{path: $path, message: $message, content: $content}' | curl -X PUT \
  -H "Authorization: token YOUR_GITHUB_TOKEN" \
  -H "Accept: application/vnd.github+json" \
  https://api.github.com/repos/OWNER/REPO/contents/repo/path/to/your/file.pdf \
  --data @-

注意事项

  • 替换命令中的YOUR_GITHUB_TOKEN、OWNER、REPO以及文件路径为实际值
  • GitHub Contents API单文件最大支持100MB,若你的PDF超出此限制,需改用Git LFS上传

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:33:27