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

如何使用curl通过GitHub Gist API上传二进制文件(含SVG/PNG)

使用curl结合GitHub Gist API上传二进制文件(含SVG/PNG/JPEG)

完全可以用curl结合GitHub Gist API上传二进制文件,包括SVG、PNG、JPEG、压缩包等类型。核心规则是:所有二进制文件需要先做Base64编码,将二进制数据转换为JSON可识别的文本字符串后,再通过content字段传递。

核心编码要求

  • 非文本二进制文件(PNG/JPEG/压缩包等):必须通过Base64编码转换为文本格式,才能放入API请求的content字段
  • SVG文件:本身是XML格式的文本文件,既可以直接传递原始内容,也可以用Base64编码后上传(后者更稳妥,避免特殊字符解析问题)

一、SVG文件的上传方法

方式1:直接传递原始文本内容(适合无特殊字符的SVG)

和普通文本文件逻辑一致,直接将SVG代码填入content字段即可:

curl \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: token ${GITHUB_TOKEN}" \
  https://api.github.com/gists \
  -d '{
    "description": "上传SVG示例",
    "public": false,
    "files": {
      "icon.svg": {
        "content": "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25z\"/></svg>"
      }
    }
  }'

方式2:Base64编码后上传(稳妥通用方案)

先将SVG文件转换为Base64字符串,再传入请求:

# 生成无换行的Base64编码字符串(Linux/macOS)
SVG_BASE64=$(base64 -w 0 icon.svg)

# 发送curl请求
curl \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: token ${GITHUB_TOKEN}" \
  https://api.github.com/gists \
  -d '{
    "description": "Base64编码上传SVG示例",
    "public": false,
    "files": {
      "icon.svg": {
        "content": "'"${SVG_BASE64}"'"
      }
    }
  }'

二、PNG/JPEG等二进制文件的上传方法

这类非文本文件必须通过Base64编码处理,步骤如下:

  1. 生成文件的Base64编码字符串:
# PNG文件示例
PNG_BASE64=$(base64 -w 0 image.png)

# JPEG文件示例
JPG_BASE64=$(base64 -w 0 photo.jpg)
  1. 构造curl请求上传:
# 上传PNG的示例
curl \
  -H "Accept: application/vnd.github+json" \
  -H "Authorization: token ${GITHUB_TOKEN}" \
  https://api.github.com/gists \
  -d '{
    "description": "上传PNG图片示例",
    "public": false,
    "files": {
      "image.png": {
        "content": "'"${PNG_BASE64}"'"
      }
    }
  }'

注意事项

  • 不同系统的Base64命令差异:Windows环境可使用certutil -encodehex image.png - | findstr /v ":"生成无换行的Base64字符串
  • GitHub Gist限制:单文件最大100MB,总内容最大1GB,需注意文件大小
  • Token权限:生成GitHub个人访问令牌时,需勾选gist权限,否则无法创建Gist

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:24:32