文件格式上傳方法
def test_upload_file(self):
url = "http://www.baidu.com/"
files = {'file': ('test.xls', open("test.xls", 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
headers = {"Access-Token": hsj_token}
#注意 headers裏主要註釋掉Content-type纔可以上傳成功
r = requests.post(url=url, files=files, headers=headers)
print(r.text)
非文件格式上傳
def format(self, data, headers):
if "Content-Type" in headers:
fd_val = str(headers['Content-Type'])
if "boundary" in fd_val:
fd_val = fd_val.split(";")[1].strip()
boundary = fd_val.split("=")[1].strip()
else:
raise Exception("multipart/form-data信息頭錯誤")
# form-data格式定式
json_str = '--{}\r\nContent-Disposition:form-data;name="{}"\r\n\r\n{}\r\n'
end_str = "--{}--".format(boundary)
args_str = ""
if not isinstance(data, dict):
raise Exception("multipart/form-data參數錯誤,data參數應爲dict類型")
for key, value in data.items():
args_str = args_str + json_str.format(boundary, key, value)
args_str = args_str + end_str.format(boundary)
args_str = args_str.replace("\'", "\"")
print("args_Str:", args_str)
return args_str
#非文件格式的formdata上傳
def test_upload_nofiles(self):
form_headers = {"Access-Token": hsj_token,
"Content-Type":"multipart/form-data; boundary=---- WebKitFormBoundaryEDDSDGEAQA3QP999"}
url = "http://www.baidu.com"
params = {"project":38}
payload = self.format(params,form_headers)
r = requests.post(url,data=payload,params=params,verify=False,headers=form_headers)
result = r.json()
print("result:",result)
參考文檔:
https://blog.csdn.net/Chihwei_Hsu/article/details/81943008 (非文件上傳)
https://blog.csdn.net/qq_39802740/article/details/84257745 (文件上傳)
https://requests.readthedocs.io/zh_CN/latest/user/quickstart.html#post-multipart-encoded