使用GitHub的API實現文件上傳--李渣渣(lizaza.cn)


        最近搭建了一個自己的博客網站和一個在線圖片格式轉換工具,經常寫博客的時候需要上傳圖片,在線轉換工具也需要一定的空間來臨時存放圖片文件。服務器的存儲空間又比較有限,於是就想着將圖片存儲的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/

完整代碼

 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)

 

注意:上傳的文件名不要有重復,否則會導致上傳失敗(可以使用當前時間+隨機數的方式來避免)

版權聲明:該文章內容為作者原創,如有轉載請標明出處lizaza.cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM