aiohttp загрузить файл как curl -F - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть запрос с curl -F "file = / tmp / test.txt", который отвечает 200, но я не могу эмулировать этот запрос в Python.Я пробовал что-то подобное

mp = aiohttp.MultipartWriter()
mp.append(open('/tmp/test.txt', 'rb'))
result = await session.post(url, data=mp)

, но оно не работает, сервер отвечает 400. Также я пробовал

mp.append_form([('file', open('/tmp/test.txt'))]) 

, оно тоже не работает.Как правильно эмулировать curl -F с помощью aiohttp?

PS Я также пытался использовать set_content_disposition () для результата mp.append (), но он возвращает None вместо Payload, как описанов документах здесь http://docs.aiohttp.org/en/stable/multipart.html#sending-multipart-requests

1 Ответ

0 голосов
/ 04 февраля 2019

Попробуйте добавить заголовки:

headers={
    'Content-Length': '{file lendth}'
    'Content-Type': 'multipart/form-data'
}

/////////////////////////////////////////

mp = aiohttp.MultipartWriter()
mp.append(open('/tmp/test.txt', 'rb'))
result = await session.post(url, data=mp, headers=headers)
...