命令行请求网站地址带token_利用gitlab或gitee作为网站免费图床的C#实现

在很久以前,大家都还在开开心心的撸着新浪图床的羊毛,突然在某一天开始,新浪图床的图片接二连三的全挂掉了,所有的新浪图床图片全部都加上防盗链了,请求报403,当然也包括博主我在内的,当时的内心是崩溃的,于是赶紧想办法,在无奈之下,想了一个馊主意,那就是先把网站的Refer暂时先屏蔽掉,于是,就在网站的母版页面加上了下面这段代码:

<meta name="referrer" content="no-referrer">

加上之后,网站的所有图片确实可以继续正常访问了,但也只是临时解决方案,所以趁正常的时候赶紧想办法搬到其他还有什么可以撸的免费图床,想到了sm.ms和人民网图床,那就写代码来搬图床吧,但馊主意毕竟是馊主意,在搬图床的时候,发现了sm.ms有上传频次限制,同时还有图片被和谐掉的可能,而人民网图床有上传失败和上传后图片格式不正确的问题。

免费图床就没有可以继续撸得了么???

无奈之下想到了阿里云OSS,说干就干,马上开通了阿里云OSS,把图片都搬过去了,感觉美滋滋,然而,在用了两天的OSS之后又发现,这玩意儿太耗流量了吧,一天跑掉10多GB的流量,有点吃不消(因为网站没备案,所以用不了阿里云的CDN加速)!

还是只有想办法看看有什么既可靠又免费的图床,于是想到了gayhub,但怎么通过代码的形式传图到gayhub呢?便开始了看API文档以及Google查找有没有相关的实现案例,很遗憾,没有找到相关的实现。

这时候一同事竟然给了我一个馊主意:手动传图到gayhub!我每次发表和修改文章需要传图的时候你告诉我需要手动传到gayhub上去???

11bcad9c4974d7c7890140a7e0fab737.png

我又想到了gaylab,于是又研究gaylab的API,发现,好像有点靠谱的样子,那就研究研究吧,但gayhub和gaylab的域名ping值实在是太高了,就算直接传上去了,访问速度也是相当慢的,不过gaylab毕竟是开源的,任何人都可以私人部属一个git托管服务器(因为之前传TeamViewer之类的资源撸过很多速度快的gaylab),如果把gaylab的API搞通之后,我再去撸个国内某大学的gaylab账号,不就可以实现免费图床了嘛!如果我多去撸几个gaylab账号,不就可以实现图床CDN分流了么,一个挂掉了我再批量替换一下地址就行了,图片始终还在!

那就开干吧!经过研究发现,gaylab都不能直接上传文件的,而是必须把文件转成Base64编码后,通过json提交到服务端进行创建文件。而且需要配置相关授权信息。

开始放码过来了!

上传图片到gaylab

要能够顺利上传图片到gaylab,大致流程是

1.创建一个公共仓库;
2.生成private_token;
3.根据生成的private_token去获取你要上传的仓库的repository_id;
4.有了repository_id便可以调对应的API去上传文件到gaylab了;
5.上传成功后便可直接访问文件

首先我们创建一个公共仓库imgbed

c80b7a14b881c3ce8db22e120ef87f54.png

接下来需要创建一个private_token,在gaylab的个人设置页面,选择左边的【Access Token】菜单,右边填写token的名字和勾上相关权限,就可以创建private_token了

0c9a17b2f1d6ece2fbc667b00f6ff518.png

6b3c4800cbdf76e72e9e3c0104ea4011.png

有了这个token,我们便可以查找到repository_id,通过接口/api/v4/projects?private_token=<你的private_token>&search=<项目仓库名>就可以查找到仓库的id,比如我查询到我的仓库id是29

31dcea5f8f9eb53598b590043e4e501c.png

现在就可以拿着我们的private_token和repository_id去上传文件了,接口地址:/api/v4/projects/<项目id>/repository/files/<文件路径>,请求方式post

添加请求头:PRIVATE-TOKEN,值为private_token

Request body格式如下:

{
    
    "branch": "master", // 需要上传到哪个分支,必填
    "author_email": "author@example.com", // 上传人邮箱,必填
    "author_name": "Firstname Lastname", // 上传人名字,必填
    "encoding":"base64", // 文件内容编码,一定是Base64
    "content": "some content", // Base64编码的文件内容,必填
    "commit_message": "create a new file" // 提交信息,必填
}

官网文档说明:https://docs.gitlab.com/ee/api/repository_files.html#create-new-file-in-repository

比如我想上传一个文件名为test.jpg的图片,则接口地址为/api/v4/projects/29/repository/files/test.jpg

请求头为:

PRIVATE-TOKEN:xxxx

请求体为:

{
    
    "branch": "master",
    "author_email": "admin@masuit.com",
    "author_name": "懒得勤快",
    "encoding":"base64",
    "content": "iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAgAElEQVR4XtW9eZBs13kf9rtr73tPz/7mLVhJUFxASoxNWRvl7Q+XJVVcTpyUZKdkS3bFkelYKpeiouxUKnFcikMrLlfKSaS4IiVRmVEcyVoo05JIAiQAgsAD8IAH4O2zLz29r3dLfd+5597Td7pn5oHMHxnUK8x03/X8vn072h9/9VuBpunQNCg/8R+6rqtfxL8HAB+la9BmTw6vRZ/Lw8Ux4m8NQRDwP/6LPgwCaPQn3WvmOcT59J04Wnyt87U0BL4PLfF8dBz9o+PmXGr+uwDwk98sOFm8x+w7LLxo+IX6vh/k2OT5510v+Z32lRdeDXjheQV1aDNrTODOB1i+qFx6TQsiAOMlZtRCcMXvMUzzVzC+rnwm5RR1dSTiCpgMkiaIhglIEiFdij6n/yuUIokrpgjxTEmCvQgU+v7bBTF5j3nXm/eZ758hTaifaV99kQDWQP+d/TFm+CDJzQIMeQOxmnJx5l9PUtLsdSM+D7kjeg4FxDOPF4LHV9TFs9MCqO8SQEiKhVIoPEe9v7oGEaFcBmHlmO8k2Jfh3nkgR+/0ta9/KxBgyMWPuZY4e5aaYyKIRS6h4Efgzl5LSIX5wlKK7ZDbJKOq4j4EWAvVgHxZncS8wq0z668ShZTpCYDkO6lq4nG4Vp4n/z+P+xYRzSIwHkfszpMYi87XXvjGa/GSBIKzZsGb5WxVl5JyZNGcZC/BVgqwkQ5gMU46f6GGDBWo5J4ZkX1JTmJ9Hopl4l758vOuNWMLXPL6Fx2WvObjgHoe8ZwFUbwoa6NI92BWRL/40ussoiOWCLlZAKEoMeWtziwUKbjovFBUQwOpB2lYiWvJlT+r2/ma8kHnGG7JRVU57nG47yJw5onlD2JYLbrPZcG+SMyL70k9xvzp+0JFCbAFp2hff/nmjFA7j2Mi/aqI0VmjKORU/l/8+6yOl8SwwDqfszKqSE0CK/XuecB9uyL5IqKQIlM9bpH4lsecB7R6vbMcrfoTBLDPjCQApX8khQP4vicA/sYrbwgOXvCzCHAWy2d0NF8yVucs7iNtlHBeHv+eF4EoDKrHdZAuA9+3d8xF+vU8AlEJJeZaOkOqPcHFQkzLz2PO1l765ptJs4TfZp7lGYGtuii6EAkau0PqQiw2ruaJ2/lEJn1l9l3C+4T/JyDDF4rv+0E84NitmsfpF3Hi40B/ObE7C8fsOcKgDVg6Sr0bqj5GV3zuK6J7BuCLxHPSombnKlrdeZxz1kBjGosd73B95HHSbA41utTZqhBQRL8w5OhfaMUL0ox9XXn1pPv1OKh8gGMvsrIlOPOIZx4RxEYi82pI2KGBJSBV9K544Ogc4uB5wM7Tt0IAs1wOLWcVwPPAnLdKgvL4LL4eP5Y4cLH0FoCSxCBcA+JmHbouABbf/f9NRAtdOQv2okiZEMWzPz5p3BljSyUS7ZVv3TpjZMVcJtc7CepZYM8SSSwyQgzFS4QqWjD+fCs9YtiEMRe9mGpnMBeHxKLpCPzw2ZRHFL+qUiImglia0OLF7pxwF+PzhDGnihJ1mWOrNRmKnUvaSqh2Nkgqn2EW8PNFuxTbBLTi8Yb3YICT4ER+LYORDC/GK3eeq8IRrpAzGddzAE3q30VGX6wjw2Xj6wqAI09PQjkjBUhfh+CFfrsAU/wjFy7mjFnClECTSyLC5vMkhApwLCJVF0YAL+EWx6t/z3KmBDgOQ87q3eQ95P3p+cQ5Emztm6+9PWNFC5dGdWHUF5pNLJwFRtWh54vb84ljvoxOGkEEGhNO4vDkczFXR7FyoWiSCzrL4Yq6gKGEYwXAgmBVLpPvKlROHO9WsiSRbUCEH1q9viCu2ApWX0RwpiQSUkVJ8Tyr6yX1SI4W76C9+vo7caAj4tjkqsXAzuMuGRAJA4hzdai6IOfp/KR6mCfiLjpGfUYh3qTRprpw4ZUjqUy/SMKWnCM/i/8Wi0x/izWKo1YqUcTSgm2iBOfykfy5OE7TFTdH+VyVALELpHLv7O9xgCMW1dq3bt5WYtFS50jRNV8ciwWWkSnmB6mshbY7x6+W388nlPmce6FOXkQF4bOctVaFEhKehQhlshpnca8CJddjnr6VolyVdrGoFAQgrVtxnYg4wvyn9GyE6A9A0jVWAZwqiVSLJBK5tPLvpJ8siCd+Du21m+8qeRm5wHEiILl2cegxFB8LxONFIJ+X4TmPSC4iDGFkxcZcBJfUncJeVMT07AvEHDmf2KSOm3UP5SqpulWKhtgiFOeGOjL0ZVn/S1CYe4VNcdZaju8hn0G4hDLQET+vKrq1126+H7FfTMFnuVDqCmkFR8DPi2Yt4OBFeleK74uMq3mMKmwG8XL8IpGIk4adFGPimLMZMpVL40KEpBUdc0b8FKqVrXL+Il0pdaoqbiPuJQ6Wb8G/JO0E+R6xbpaGlyCIhQDfYXJfHOQQOiI6XSHsxzWULmMtS7BVTlr8bFKiygQiKYswwhVWkIjFFFmvUA6HlDAv0qbktqMU6iK1oYrjs3F19flnjSHVZxVcLgGPLF+OJdP14+vGolgS4SIuj+0Cdu1eu3l3xk2aZT4lQhS+5+OAehFHLvpe1SsquDNpyVBvab4GKklhO8AX1SNJT0aIQQFIbIlL10m1M4gY4tiuCNzP41jV6BK6eNaqVkV2fL4ktuhZFItbfqdaqEk9q4IsuVb45/T2rMBn4v383etv3AvdpDC3myTYBMdexIUXgXqefp0rgmVSY07OmV9ASW5IMSW4NbaKSQKpFmnsJqlcLIAVBC5dEnUxhB8suCoUpopYTD67AENyqzBaxT/JefIaUrkQ5wnrXIhtlTBU1aGK6lkujnWzQrQ337wvarIQvsACo0nebh7AFxlUF4rY8OIxd4m3E9pVi70SNebC6zLfDxaLS0V5wi3iWj5p80Trpi560iBS9bJcENV1ilZjHk0KTZoAWNWRIUTh
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值