gitee免登录上传修改文件, 一篇全搞定。实操经验分享,本案例适用于不想通过git工具上传文件至仓库。
解决方案
需要免密操作gitee仓库,可以通过gitee提供的私人令牌进行上传,私人令牌支持api服务上传。
gitee 私人令牌获取
1.登录gitee网址,点击头像->设置,到设置页面。
2.点击【私人令牌】,点击【生成新令牌】
3.随意填个名字,提交后,输入登录账户的密码,再次提交后,生成私人令牌。需要注意的是,私人令牌生成后,需要将令牌复制保存到自己的电脑中,生成弹框确认关闭之后,平台无法找回。
- | - | - |
---|---|---|
gitee Api服务使用
gitee api服务 文档地址直达链接
如何使用gitee api服务
1.支持网页测试,测试接口的时候想看得更仔细,可以打开浏览器的【开发者模式】,浏览器快捷键F12或者右键->检查均可打开。打开后切换至【网页】选项卡
- | - |
---|---|
2.通过搜索框,搜索需要的文档,当前展示案例为【新建文件】接口。
3.【新建文件】接口,该接口为上传文件到仓库,需要注意的是,仅为上传新文件(文件名不可与仓库内同一路径下的文件名一致),如果某个文件需要更新,需要调用【更新文件】接口。
// 该接口为post请求,地址为 https://gitee.com/api/v5/repos/{owner}/{repo}/contents/{path}
/**
接口中的参数解释,带“*”号的参数为必填,其他参数不做过多解释
access_token:'已经申请的key',
owner:"A",gitee账户名,在【个人主页】获取,不理解的可以看下面的示意图
repo:"B",仓库地址,需要将文件传输至哪一个仓库,已配图
path:"test/A",文件上传路径,现有A文件需要上传至仓库根目录下,即path:"A",需要上传至test文件夹下即path:"test/A"
主要新增内容
content:'',base64文件
message:'' 随意写,等同于git中的commit信息
**/
// 最后用于请求的地址拼接 https://gitee.com/api/v5/repos/A/B/contents/test/A
- | - | - |
---|---|---|
4.在线请求,请求成功后,文件也会加入到仓库中。页面提供了传参示例,也可通过浏览器控制台,查看该接口如何传参。可到上传仓库查看是否存在该文件。
- | - | - |
---|---|---|
5.更多请求示例,这边就不赘述了,大家可以自己动手试试,本案例仅介绍基本使用方式。
在javascript 中 使用gitee api服务
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script>
let obj = {
"owner": gitee登录名,
"repo": 仓库名,
"path": 上传地址,
}
let url = `https://gitee.com/api/v5/repos/${obj.owner}/${obj.repo}/contents/${obj.path}`
$.ajax({
url,
type: "POST",
data: {
"access_token": "申请的key",
content: '123',
"message": '提交',
},
dataType: "json",
success: function (data) {
console.log(data);
}
})
</script>
</body>
</html>
在python 中 使用gitee api服务
需要使用到base64、requests模块,没有安装的话,需要先执行下面的代码进行安装。
pip install base64
pip install requests
import requests
import json
import base64
import os
base_url = 'https://gitee.com/api/v5/repos'
# 需要自行替换的部分 开始
access_token = 申请的key
owner = gitee登录名 # 用户仓库名称
repo = 仓库名 # 仓库名称
# 需要自行替换的部分 结束
branch = 'master' #分支名称
# 设置请求头,指定内容类型为JSON
headers = {
'Content-Type': 'application/json'
}
# 文件转base64
def file_to_base64(file_path):
# 打开文件并读取其内容
with open(file_path, "rb") as file:
# 读取文件内容
file_content = file.read()
# 使用base64对文件内容进行编码
base64_string = base64.b64encode(file_content).decode('utf-8')
return base64_string
# 新增文件
def addFile(content,message,filePath):
url = base_url + f'/{owner}/{repo}/contents/{filePath}'
# 要发送的数据
data = {
'access_token':access_token,
'content':content,
'message':message
}
# 将数据转换为JSON格式
json_data = json.dumps(data)
response = requests.post(url,data=json_data, headers=headers)
# 检查请求是否成功
if response.status_code == 201:
# 获取响应内容
content = response.json()
return content
else:
print(f'请求失败,状态码:{response.status_code}',response.json())
#调用示例
addFile(file_to_base64(填写需要上传的文件相对路径),'新增',"填写上传地址")