在开发过程中经常有需要上传文件,而python上传文件官方并不直接支持,网上的大部分方案都是用python poster库来支持文件上传,用这种方式上传文件确实也特别的简单。
今天我要介绍的是模拟网页来上传文件,这样不需要依赖第三方库,使用和传播都更加的方便。
既然是模拟网页提交,我们先来看看网页上传文件到底上传了什么内容?
这是请求的header,我们主要关注的是Content-Length、Content-Type、和提交的数据,如果上传文件涉及到身份的验证,可能还需要关注Cookie
这是提交的内容,总共提交了四个字段
app 字符串 值为dlife
platform 字符串 值为android
type 字符串 值为package
file 文件 文件流
可以看到一些规律,字符型数据都是如下的内容
------WebKitFormBoundarywxxHf5sLp9I0dQCs Content-Disposition: form-data; name="app" dlife
总共分为4行
第一行 ——WebKitFormBoundarywxxHf5sLp9I0dQCs boundary值,和Content-Type里面boundary一致,boundary是内容之间的分隔符
第二行 Content-Disposition: form-data; name=”app” 数据类型和字段名称
第三行 为空(\r\n)