0

How to send form data and files using chunked encoding?

I tried:

def gen():
  a = f.read(1024)
  while a:
    yield a
    a = f.read(1024)
r = requests.post(url, data=gen())

It is indeed sending a file using chunked encoding. However I cannot figure out how to append to this generator filename and form data in { "key" : "value" } format.

Alexii
  • 58
  • 5

1 Answers1

0

Looks like I solved it using requests_toolbelt:

from requests_toolbelt import MultipartEncoder

m = MultipartEncoder(
  fields = {
    "key": "value",
    "file1": ("my_file.zip", open("my_file.zip", "rb")),
  }
)

def gen():
  a = m.read(1024)
  while a:
    yield a
    a = m.read(1024)

r = requests.post(url, data=gen(), headers={'Content-Type': m.content_type})
Alexii
  • 58
  • 5