Python requests库Post方法上传文件之multipart/form-data
requests的Post上传可以分为4种
application/x-www-form-urlencoded
multipart/form-data
application/json
text/xml
具体详解可以参考:四种传输格式
重点 multipart/form-data
注意
1.在headers中需要注释掉Content-Type
2.files的文件格式根据具体的文件而定文件:file/zip,file/txt,file/rar…图片:image/png,image/jpg
3.在headers中Cookie、Referer、Host等参数需要加上。
具体代码如下
# 上传modem压缩包
import requests
class reportModem:
def __init__(self) -> None:
super().__init__()
self.url = "https://mate.mediatek.com/mita/api/swload/file/upload"
self.headers = {
"Accept": "*/*",
# "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundary4QAlvstnnUNT2Rf2",
"Host": "mate.mediatek.com",
"Content-Length": "28567201",
"Origin": "https://mate.mediatek.com",
"Referer": "https://mate.mediatek.com/mita/ue/admin",
"Cookie": "...MiTAAuth=CfDJ8A85HaR62sNHktmd15ZRjlviKVxhYBn1A-vN0jOXHNXm1Il5StYD0zppifrjSFlsXUT63z77IbdMH-G9PbDFSFoSHq0HG48_5HAyxWdyN17FYIIODT7BQ9jvooTOnaPW8XRV6diLkopWSf8eUoAvS_t1q6ko9RfLb59EDynu4YU-51Oq-bKRydxsBx-bBW6Yz_jPeVTbEEDlk9B9JUxEbyXp6_xPh6ODZ2jwoBZvxWfNO8eNVBF7-mn1YHdScdPWaO1nDMY9M31aBFdIjWST2gxKTGWBvqVA5IeDXLTq9ITeEglRtDNulz025_yY4z-f4kgm1waUU5FL2v24GkmVh_jXAsd-CuMKhqyQh925JAyvCMbtfiZnqt3H6t6h6eadmOePb4S45-RqlvNtRwHbhtkArKQu6uG15zqqMXeAPxEzsqEr0GnDRavjte1BjURW-UbRtlh-YyiJLDfyf4BHHYOuhBs2FfwlNIzSPkHBCP_DB7lW8unJN08UqRRMuVnQyXsedwyfMgGIlUJmWJkzdodI60uiUcw9n5_bWbLJJSKdhqBg0RfT-JJrP5whQidI9Cmfwt0usXN6rwOUiXTEcqYPLELXA4vIwUqu6gs0UIA3",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"
}
self.data = {
"versionNo": "",
"preserved": "false",
"mitaFile": "(binary)"
}
self.file = {
('file',
('FULLLOAD_20210518.VMOLYM.MT6298.EVB.NLWCTG.SAP.AIF.0126(MT6298.NR16.R1.MP.W21.20.P1).zip', open(
'D:\Mercury1\Load\FULLLOAD_20210518.VMOLYM.MT6298.EVB.NLWCTG.SAP.AIF.0126(MT6298.NR16.R1.MP.W21.20.P1).zip',
'rb'), 'file/zip'))
}
def reportFile(self):
response = requests.post(url=self.url, headers=self.headers, data=self.data, files=self.file, timeout=10).json()
print(response)
if __name__ == "__main__":
rm = reportModem()
rm.reportFile()