github图床实现原理

简而言之:

  • 上传
    • 指定用户名
    • 仓库
    • token
    • 图片名称即可
    • put请求
  • 获取
    • get请求
    • 图片链接字段为:download_url

1.上传图片

​ 在github的官网可以查到上传文件的api如下;

  • https://api.github.com/repos///contents/
    • 其中url参数
      • users:你的github名称
      • repo:仓库
      • path:你文件的路径
    • put请求
    • json参数
{
  "message": "test",
  "content": "base64编码的图片"
}

即可上传图片。

image-20210429145328874

现在图片是上传了,那我们如果获取链接呢?

别着急我们往下看。

2.获取生成的链接

https://api.github.com/repos///contents/

  • 其中url参数
    • users:你的github名称
    • repo:仓库
    • path:你文件的路径
  • get请求

返回的结果:

{
    "name": "1.jpg",
    "path": "mian/test1/1.jpg",
    "sha": "3d9993c3664adb8f40542006b91c83f491ee4b73",
    "size": 30211,
    "url": "https://api.github.com/repos/xvzhifeng/typoraFile/contents/mian/test1/1.jpg?ref=main",
    "html_url": "https://github.com/xvzhifeng/typoraFile/blob/main/mian/test1/1.jpg",
    "git_url": "https://api.github.com/repos/xvzhifeng/typoraFile/git/blobs/3d9993c3664adb8f40542006b91c83f491ee4b73",
    "download_url": "https://raw.githubusercontent.com/xvzhifeng/typoraFile/main/mian/test1/1.jpg?token=ALXVKN24VO2PP3LFO6BC2PLARFIDM",
    "type": "file",
    "content": "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL\nDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/\n2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAEsAhUDAREAAhEBAxEB/8QA\nGwAAAQUBAQ"
     "encoding": "base64",
    "_links": {
        "self": "https://api.github.com/repos/xvzhifeng/typoraFile/contents/mian/test1/1.jpg?ref=main",
        "git": "https://api.github.com/repos/xvzhifeng/typoraFile/git/blobs/3d9993c3664adb8f40542006b91c83f491ee4b73",
        "html": "https://github.com/xvzhifeng/typoraFile/blob/main/mian/test1/1.jpg"
    }
}

其中download_url就是图片地址。

Q.E.D.