1、打开fiddler,在UI界面中,选择文件,进行上传文件操作
接口测试-上传文件

2、在Fiddler中,检索刚才上传文件的请求,查看上传文件的请求报文接口测试-上传文件
从请求报文内容中摘出一般情况下上传文件的主要内容及格式:
POST https://ip:port/MyInfo/Ajax/UploadPhoto.ashx HTTP/1.1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary5c33BeLjdO5AMYhR
Cookie: XXX=xxx

------WebKitFormBoundary5c33BeLjdO5AMYhR
Content-Disposition: form-data; name=“uploadFile_963”; filename=“01-linux -14.jpg”
Content-Type: image/jpeg
上传文件的二进制内容
------WebKitFormBoundary5c33BeLjdO5AMYhR–

对以上请求响应内容进行解析
以下几点内容可作为了解
 2.1 请求头headers中的"boundary=----WebKitFormBoundary5c33BeLjdO5AMYhR",一般用系统时间(一串数字)来做为boundary值
 2.2 请求体body中的"WebKitFormBoundary5c33BeLjdO5AMYhR"和"WebKitFormBoundary5c33BeLjdO5AMYhR":前面的"------“不可省l略,它是做为分隔符存在的
 2.3 ------{boundary} http协议的Form的分隔符,表示结束的话在其后面加”",例如上述最后一个
------WebKitFormBoundary5c33BeLjdO5AMYhR–”,另外在每一段信息描述后要跟一个\r\n再跟文件数据,文件数据后面也要跟一个\r\n
 2.4 多文件上传必须用multipart/mixed

重要内容解析
 2.5 请求头中的Content-Type告诉客户端使用表单上传文件,请求体中的Content-Type表示上传文件的文件类型,如果不知道文件类型的话,可以设为application/octet-stream,以二进制流的形式上传下载
 2.6 请求的Cookie信息根据需求进行自定义
 2.7 通过请求体中Content-Disposition: form-data; name=“uploadFile_963”; filename="01-linux -14.jpg"中name=“uploadFile_963"来构建请求参数:
   2.7.1 name=“uploadFile_963”:文件参数的名字,构建uploadFile_963参数,参数值以元组方式传入
  第一个参数值:filename,填入上传文件的名称
  第二个参数值:填入文件路径,并以读二进制的方式打开:open(r"XXX\xx\01-linux基础-14.jpg”,“rb”)
  第三个参数值:文件的格式Content-Type: image/jpeg,可选
  2.7.2 构建文件请求参数
file_data = {
  “uploadFile_963” : (“01-linux基础-14.jpg”,open(r"C:\Users\hyongchang\Desktop\01-linux基础-14.jpg",“rb”))
   }

 2.8 调用接口进口进行文件上传
  rquests.post(upload_url,files=file_data,cookies=cookies)

相关文章: