当前位置: 首页 > news >正文

Python(35):Python3 通过https上传文件和下载文件

Python(35):Python3 通过https上传文件和下载文件

Python http方式的下载,参考:https://blog.csdn.net/fen_fen/article/details/113753983

https需要先安装需要的模块

1、上传示例

1.1、调用:

upload_strategy(access_token,"123456789")

1.2、上传代码

global pkcs12_filename, pkcs12_password
pkcs12_filename = './conf/xxx-client-cert-xxx.p12'
pkcs12_password = 'xxx'
self.host=10.1.1.101# 上传文件def upload_file(self, access_token,appid):#warnings.simplefilter('ignore', ResourceWarning)# filepath = os.getcwd()# print(filepath)# print(filepath+"\data\\"+fileName)try:header_up = {"Authorization": "Bearer " + access_token}file=open("./data/"+fileName, "rb")files={"file": file}#files = {"file": open("./data/"+fileName, "rb")}url = "https://"+self.host+"/xxx/v1/xxx/strategy/xxx?appId="+appidapi_json = base_request.upload_request(url, header_up, files)if api_json["code"] == 0:print(">>上传策略成功。")else:print(">>上传策略失败,", api_json)file.close()return api_jsonexcept Exception as e:print(">>上传策略失败,Exception:", e)
# 基础请求:上传
def upload_request(url, headers, files):response = requests_pkcs12.post(url, headers=headers, files=files,pkcs12_filename=pkcs12_filename,pkcs12_password=pkcs12_password, verify=False)api_json = response.json()  # 获取请求返回实际结果的json串值return api_json

2、下载示例

 2.1、下载调用:

   self.host=10.1.1.101# 下载客户端def download_client(self, header_all):try:url = "https://" + self.host + "/xxx/v1/xxx/download-client"getfile = Getfile(url, header_all)filename = getfile.getfilename()#print(filename)if filename:getfile.download(filename)except Exception as e:print(">>下载客户端失败,Exception: ", e)header_all = {"Content-Type": "application/json;charset=UTF-8"}
header_all['Authorization'] = "Bearer " + access_token
download_client(header_all)

2.2、Python3 https下载文件工具类:

# -*- coding: utf-8 -*-"""
Create by HMF on 2024/01/11.
"""
import re,time
import requests
import requests_pkcs12class Getfile(object):  # 下载文件global pkcs12_filename, pkcs12_passwordpkcs12_filename = './conf/xxx-client-cert-xxx.p12'pkcs12_password = 'xxx'def __init__(self, url, headers):self.url = urlself.headers = headersdef getheaders(self):try:#r = requests_pkcs12.head(self.url, headers=self.headers, verify=False)r = requests_pkcs12.head(self.url, headers=self.headers, pkcs12_filename=pkcs12_filename, pkcs12_password=pkcs12_password, verify=False)rs_headers = r.headersreturn rs_headersexcept Exception as e:print(e)# 获取默认下载文件名def getfilename(self):try:if 'Content-Disposition' in self.getheaders():file = self.getheaders().get('Content-Disposition')# filename = re.findall('filename="(.*)"',file)filename = re.split("=", file)[1]if filename:print("下载文件名:" + filename)return filenameelse:print("下载文件失败")except Exception as e:print(e)# 下载文件def download(self, filename): try:#self.r = requests_pkcs12.get(self.url, headers=self.headers, stream=True, verify=False)self.r =requests_pkcs12.get(self.url, headers=self.headers,pkcs12_filename=pkcs12_filename,pkcs12_password=pkcs12_password, stream=True,  verify=False)with open(filename, "wb") as code:# 边下载边存硬盘for chunk in self.r.iter_content(chunk_size=1024): if chunk:code.write(chunk)time.sleep(1)except Exception as e:print(e)

http://www.lryc.cn/news/278709.html

相关文章:

  • 【MySQL】日期格式为 YYYY-MM 无法直接使用 DATE_SUB 函数的解决方案(特殊处理 或 PERIOD_DIFF 函数)
  • Redis的key淘汰方式和内存不足淘汰方式
  • java使用redis
  • MySQL技能树
  • redis获取过期时间
  • ERROR in Plugin “react“ was conflicted .... 天坑留念-turborepo、eslint plugin
  • MergeTwoSortedLists 【合并有序链表】
  • 基于多反应堆的高并发服务器【C/C++/Reactor】(中)HttpRequest模块 解析http请求协议
  • muduo网络库剖析——网络地址InetAddress类
  • 什么是本地IP?服务器本地IP有哪些优势?
  • Open CASCADE学习|参数化球面的奇异性
  • 基础知识篇(一)Acticity生命周期
  • Java内存结构
  • Java--ListUtil工具类,实现将一个大列表,拆分成指定长度的子列表
  • SpringSecurity 密码加密登录
  • 大模型实战作业03
  • 【AI视野·今日Sound 声学论文速览 第四十四期】Tue, 9 Jan 2024
  • Windows Copilot 更新及使用教程
  • 【Android开发】不同Activity之间的数据回传实例(一)摘桃子游戏
  • 增量式PID和脉冲轴组合控制阀门开度(算法介绍)
  • 解决Vue.js Devtools未检测到Vue实例的问题
  • 【Java基础】进程与线程,并发与并行,CPU单核与多核
  • git修改最新提交(commit)信息
  • 想寻找Axure的替代品?我们已经试用了10+款设计工具,来看看吧!
  • 报文大小限制、请求体类型总结
  • rknn加载onnx时报错 GLIBC=2.29 no found librknnc.so
  • ASP .net core微服务实战(杨中科)
  • 使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv-ui开发脚手架
  • VUE+bpmn.js实现工作流
  • 微信小程序Burp抓包