对Content-Type为multipart/form-data接口的处理方法

先解释一个名词enctype

enctype就是encodetype:就是编码类型的意思。

默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传,只有使用了multipart/form-data,才能完整的传递文件数据。

准确的说,application/x-www-form-urlencoded不是不能上传文件,而是只能上传文本格式的文件,multipart/form-data是将文件以二进制的形式上传,这样可以实现多种类型的文件上传。

一、接口相关信息

二、requests-toolbelt

对于Content-Type为multipart/form-data的接口,我们使用requests-toolbelt来进行处理。

from requests_toolbelt.multipart import MultipartEncoder

MultipartEncoder(fields={
            'file': ('包含格式的图片名',图片的二进制流,'image/图片格式')
        })

ps:

png图片:image/png

jpg图片:image/jpeg

gif图片:image/gif

import requests
from requests_toolbelt.multipart import MultipartEncoder


class UploadImg:
    def __init__(self):
        self.headers = {}

    def upload_img(self):
        url = 'http://httpbin.org/post'
        data = MultipartEncoder(fields={
            'file': ('osi.png', open(r'C:\osi.png', 'rb'), 'image/png')
        })
        self.headers['Content-Type'] = data.content_type # 对请求头进行处理
        res = requests.post(url=url, data=data, headers=self.headers)
        print(res.text)


if __name__ == '__main__':
    UploadImg().upload_img()
posted @ 2022-06-05 17:43  少年不太冷2  阅读(809)  评论(0)    收藏  举报