python 使用 multipart/form-data 上传照片
2022-12-22 10:27:23 # python

背景

​ 今天想使用 python 上传图片到自己的兰空图床上,发现图床只能使用 multipart/form-data 请求上传,也了解了 multipart/form-data 请求的原理。文末会贴出大佬解析原理的链接。

python 代码部分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import random
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder

url = "https://XXX.XXXX.XXXX/api/v1/upload"

fl = open(r"XXXXXXX.png", "rb")
multipart_encoder = MultipartEncoder(
fields={
"file": ("XXXXXXX.png", fl, "image/png")
},
# boundary 该参数作为请求信息中的分割符号,没用具体含义
boundary="----WebKitFormBoundary" + "".join(random.sample("0123456789abcdef", 16))
)
header = {
"Authorization": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"Content-Type": multipart_encoder.content_type
}
res = requests.post(url, data=multipart_encoder, headers=header)
print(res.request.body)
print(res.json())

相关资料

​ 理解 HTTP 协议中的 multipart/form-data :https://zhuanlan.zhihu.com/p/459122038

​ python multipart/form-data 上传图片:https://www.jianshu.com/p/816f312623ae