使用GitHub的API实现文件上传--李渣渣(lizaza.cn)
2021-03-05 13:27
标签:with open 必须 tar develop 否则 简单的 comm turn 最近搭建了一个自己的博客网站和一个在线图片格式转换工具,经常写博客的时候需要上传图片,在线转换工具也需要一定的空间来临时存放图片文件。服务器的存储空间又比较有限,于是就想着将图片存储的GitHub上,来节省服务器的空间。 一开始使用的是PicGo来上传文件,每次都要单独复制网址使用起来不方便。后来发现GitHub有API可以上传文件,那这件事情就简单的多了。 接下来简单介绍一下使用API上传文件的过程: 1、创建一个token(也可以使用账号和密码,但是安全性得不到保障) 登录自己的账号,然后进入token创建网站https://github.com/settings/tokens 创建完成后一定要复制你的token,他只显示一次! 2、调用api接口上传文件(在此以python进行示例) 官方文档v3:https://developer.github.com/v3/repos/contents/ V4:https://developer.github.com/v4/ 完整代码 注意:上传的文件名不要有重复,否则会导致上传失败(可以使用当前时间+随机数的方式来避免) 版权声明:该文章内容为作者原创,如有转载请标明出处lizaza.cn 使用GitHub的API实现文件上传--李渣渣(lizaza.cn) 标签:with open 必须 tar develop 否则 简单的 comm turn 原文地址:https://www.cnblogs.com/lizaza/p/12896536.html 1 import requests
2 import base64
3 import json
4
5
6 # 读取文件
7 def open_file(file_path):
8 with open(file_path, ‘wb+‘) as f:
9 return f.read()
10
11
12 # 将文件转换为base64编码,上传文件必须将文件以base64格式上传
13 def file_base64(data):
14 data_b64 = base64.b64encode(data).decode(‘utf-8‘)
15 return data_b64
16
17
18 # 上传文件
19 def upload_file(file_data):
20 file_name = "" #文件名
21 token = "[token]"
22 url = "https://api.github.com/repos/[user]/[repo]/contents/[path]/"+file_name # 用户名、库名、路径
23 headers = {"Authorization": "token " + token}
24 content = file_base64(file_data)
25 data = {
26 "message": "message",
27 "committer": {
28 "name": "[user]",
29 "email": "user@163.com"
30 },
31 "content": content
32 }
33 data = json.dumps(data)
34 req = requests.put(url=url, data=data, headers=headers)
35 req.encoding = "utf-8"
36 re_data = json.loads(req.text)
37 print(re_data)
38 print(re_data[‘content‘][‘sha‘])
39 print("https://cdn.jsdelivr.net/gh/[user]/[repo]/[path]"+file_name)
40 # 在国内默认的down_url可能会无法访问,因此使用CDN访问
41
42
43 if __name__ == ‘__main__‘:
44 fdata = open_file(‘cloud.jpg‘)
45 upload_file(fdata)
文章标题:使用GitHub的API实现文件上传--李渣渣(lizaza.cn)
文章链接:http://soscw.com/index.php/essay/60461.html