python请求发送错误的多部分负载

python请求发送错误的多部分负载,python,http,flask,python-requests,Python,Http,Flask,Python Requests,我正在尝试使用requests包发送一个由多个部分组成的POST请求 代码如下: with open("small-car.png", "rb") as image_file: encoded_image = "data:image/png;base64,%s" % base64.b64encode(image_file.read()) files = {'img': encoded_image} r = requests.post(url, files=files) 在服务器端,我

我正在尝试使用requests包发送一个由多个部分组成的POST请求

代码如下:

with open("small-car.png", "rb") as image_file:
    encoded_image = "data:image/png;base64,%s" % base64.b64encode(image_file.read())

files = {'img': encoded_image}
r = requests.post(url, files=files)
在服务器端,我依靠下面的flask代码对其进行解码:

    data = request.form.to_dict()
但是,数据总是{}。带有wireshark的峰值显示以下内容:

    data = {'file': files}
    response = requests.put(url=url, data=data)
data = {'img': ('', encoded_image)}
requests.post(url, files=data)
这似乎是错误的。我认为正确的标题不应该包含filename=xxx部分


这里有没有办法调整请求以执行正确的操作?

我认为您可以执行以下操作:

    data = {'file': files}
    response = requests.put(url=url, data=data)
data = {'img': ('', encoded_image)}
requests.post(url, files=data)

此外,您可以在flask代码导入ipdb中添加跟踪,而不是使用wireshark;ipdb.set_trace并检查Python中发布的内容。

我非常确定您的标题是正确的。 在flash中,分别接收文件

看看这个:


如果要排除文件名部分,请执行以下操作:

    data = {'file': files}
    response = requests.put(url=url, data=data)
data = {'img': ('', encoded_image)}
requests.post(url, files=data)
元组的第一个元素将作为文件名,因为它是空的,所以将被排除