python模拟文件上传(multipart/form-data形式)
2022/4/10 11:12:33
本文主要是介绍python模拟文件上传(multipart/form-data形式),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
我们通过抓包工具,抓到上传文件的时候下面的post传输的数据,就是浏览器控制器中显示的Request Payload
------WebKitFormBoundarynZb9BK3DBujba6Z2 Content-Disposition: form-data; name="__VIEWSTATE" /wEPDwUJNDc2MzM2OTk3ZGS0sDY2lwhw3cK6BpS7DP4LL/pVS1fwACEm67roAq7xaw== ------WebKitFormBoundarynZb9BK3DBujba6Z2 Content-Disposition: form-data; name="__VIEWSTATEGENERATOR" 8AA0AEB0 ------WebKitFormBoundarynZb9BK3DBujba6Z2 Content-Disposition: form-data; name="__EVENTVALIDATION" /wEdABdwEIM+9ljNRxmpNzgN6IJ6GXe/BpiiCcppl3PRVXGLJvVDL1IC8mSY8LCpQhBijMUZUJ8KdHr4AJMS3YNTToqIEIwp6IVONiIdALVRMBxa5csxmd4JIMyklOPCI7iUcwardrzAsF0DsWlP6tF4+5klq0s3naV7Y7FpPV3sbg/8DQh/VRLTESOi0oG2UGbE0JgkNjNt/bZ7hRmry31cW8qsCyNFZFpqymkaMzNK9YGKf8H4SARlUFnLprbLaPwS8nsOO7Qt+va79Co+MIU8gR/jajFt+6qdHWWO2PdeWThPhfXUX4Z8bTZ2FDr79dS5BVz9hBcwb1RQNKN/AwvztWy6giKpHXcdvIWBTSfk71PbvIUsDfd9PVqStNlR+JBwc8zPAKZTvP5rCl1CiqfLwzopnTq+BNiCqezsolefUoaJj7E5jBBkTeha0O922YbyQuS9cjYLEQ5UlQjhyXmaUwj5PIuWZGgzO17dB322+QNkOgeeYaMSG0L26ZIS/0LwGvKAbddqe0EhiJ3WCcDK5gdS ------WebKitFormBoundarynZb9BK3DBujba6Z2 Content-Disposition: form-data; name="File"; filename="pp.pdf" Content-Type: application/pdf ------WebKitFormBoundarynZb9BK3DBujba6Z2 Content-Disposition: form-data; name="ctl00$content$ddlLanguage" 2052 ------WebKitFormBoundarynZb9BK3DBujba6Z2 Content-Disposition: form-data; name="ctl00$content$cmdSaveAttachment" 图片转文字 ------WebKitFormBoundarynZb9BK3DBujba6Z2--
这是我们通过python的requests模块上传文件,如同我们浏览器的multipart/form-data形式上传文件,代码如下。
替换files里面的键值对就可以为你所用了。
#coding:utf-8 import requests import sys reload(sys) sys.setdefaultencoding('utf8') files={'__VIEWSTATE':(None,'/wEPDwUJNDc2MzM2OTk3ZGS0sDY2lwhw3cK6BpS7DP4LL/pVS1fwACEm67roAq7xaw=='), '__VIEWSTATEGENERATOR':(None,'8AA0AEB0'), '__EVENTVALIDATION':(None,'/wEdABdwEIM+9ljNRxmpNzgN6IJ6GXe/BpiiCcppl3PRVXGLJvVDL1IC8mSY8LCpQhBijMUZUJ8KdHr4AJMS3YNTToqIEIwp6IVONiIdALVRMBxa5csxmd4JIMyklOPCI7iUcwardrzAsF0DsWlP6tF4+5klq0s3naV7Y7FpPV3sbg/8DQh/VRLTESOi0oG2UGbE0JgkNjNt/bZ7hRmry31cW8qsCyNFZFpqymkaMzNK9YGKf8H4SARlUFnLprbLaPwS8nsOO7Qt+va79Co+MIU8gR/jajFt+6qdHWWO2PdeWThPhfXUX4Z8bTZ2FDr79dS5BVz9hBcwb1RQNKN/AwvztWy6giKpHXcdvIWBTSfk71PbvIUsDfd9PVqStNlR+JBwc8zPAKZTvP5rCl1CiqfLwzopnTq+BNiCqezsolefUoaJj7E5jBBkTeha0O922YbyQuS9cjYLEQ5UlQjhyXmaUwj5PIuWZGgzO17dB322+QNkOgeeYaMSG0L26ZIS/0LwGvKAbddqe0EhiJ3WCcDK5gdS'), 'File':('pp.pdf',open('C:\Administrator\pp.pdf','rb'),'application/pdf'), 'ctl00$content$ddlLanguage':(None,'2052'), 'ctl00$content$cmdSaveAttachment':(None,'图片转文字') } response=requests.post(url,files=files) html = response.text print html
在官方网站上,requests模拟一个表单数据的格式如下:
files = {'name': (<filename>, <file object>,<content type>, <per-part headers>)}
这一行模拟出来的post数据为:
Content-Disposition: form-data; name=’name’;filename=<filename> Content-Type: <content type> <file object> --boundary
如果filename 和 content-Type不写,那么响应模拟post的数据就不会有二者。
这篇关于python模拟文件上传(multipart/form-data形式)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门