python3 宝塔上传文件接口,requests发送POST请求提交上传文件
python3 宝塔上传文件接口API,requests发送POST请求提交上传文件
宝塔上传chrome截图:
Request URL:
/files?action=upload
## 定义主要函数
def PingBaoTa(ip, port): # 拼接链接
return "http://" + ip + ":" + port
def GetMd5(s): # 参考了Demo.py
m = md5()
m.update(s.encode("utf-8"))
return m.hexdigest()
def GetKeyData(apikey): # 签名算法
now_time = time()
p_data = {
"request_token": GetMd5(str(now_time) + "" + GetMd5(apikey)),
"request_time": now_time
}
return p_data
def GetSitePath(btpanel, btkey, site): # 获取指定站点目录 若站点不存在则返回-1
data = Websites(btpanel, btkey)["data"]
for i in data:
if i["name"] == site:
return i["path"]
return -1
def WebUpload(btpanel, btkey, site, file_name): #上传文件
"""
btpanel 面板地址
btkey API密匙
site 设置上传文件的站点
file_name 上传文件
"""
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0',
#'Content-Type': 'application/octet-stream', #这里这个参数一定不要给,否则会失败
}
url = btpanel + config["WebUpload"] # config["WebUpload"]为post请求地址
data = GetKeyData(btkey)
f_path = GetSitePath(btpanel, btkey, site)
file_name.replace('\\', '/')
file = file_name.split('/')[-1]
file_tup = {
#file: ( 'blob', open(file_name, 'rb'), 'application/octet-stream'), #用这个上传文件时会创建一个临时文件名,但是文件内并无任何内容,去宝塔论坛上看到也有和我一样的只有一个文件名的情况,所以我们把post请求种的每一项拆分开的到如下:
'blob': open(file_name, 'rb'),
"filename" :"blob",
"Content-Type": "application/octet-stream",
"Content-Disposition": "form-data"
}
data['f_path'] = f_path
data['f_name'] = file
data['f_size'] = str(os.path.getsize(file_name))
data['f_start'] = '0'
res = requests.post(url,files=file_tup, data = data, headers = headers)
resp = res.content.decode()
return resp
if __name__ == "__main__":
_ApiKey = "**********" #宝塔api key在宝塔后台 面板设置>api接口>接口密钥 获得
_BtPanel = "0.0.0.0" #面板ip
_Port = "12345" #面板端口
_Url = PingBaoTa(_BtPanel, _Port)
print (WebUpload(_Url, _ApiKey, "baidu.com", "./wordpress/wordpress.zip")) #要将文件./wordpress/wordpress.zip上传到宝塔后台baidu.com的站点并打印出返回结果
输出结果为:
{"status": true, "msg": "上传成功!"}
版权声明:
作者:José
链接:https://www.josejang.com/about-work/257.html
来源:José's ⎝⏠⏝⏠⎠ Blog
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论