如何使用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编码处理,步骤如下:
- 生成文件的Base64编码字符串:
# PNG文件示例 PNG_BASE64=$(base64 -w 0 image.png) # JPEG文件示例 JPG_BASE64=$(base64 -w 0 photo.jpg)
- 构造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
相关产品推荐
相关产品推荐

