Загрузка файла на сервер в Python с помощью requests.post

Возникла необходимость в отправке файлов на сервер средствами Python, код написанный по документации выдает 500 код ошибки.

import requests
url = 'https://httpbin.org/post/files'
file = {'schema.json': open('schema.json', 'rb')}
response = requests.post(url, files=file)
print(response.text)

При этом Curl запрос с тем же содержимым curl -X POST "https://httpbin.org/post/files" -H "accept: application/json" -H "Content-Type: multipart/form-data" -F "[email protected];type=application/json" возвращает 200 код. Как в Python добиться такого же результата?


Ответы (3 шт):

Автор решения: Sergei Kirjanov

Если убрать /files -- работает

→ Ссылка
Автор решения: compressor

В этом варианте работает

'''
url = 'https://httpbin.org/post/files'
files = {'payload': ('README.md', open('./data/README.md', 'rb'))}
response = requests.post(url, files=files)
print(response.text)
'''

Но появилась другая проблема, как отдельный файл работает, а добавляешь его в программу и опять выдает 500 код. С чем это может быть связано?

→ Ссылка
Автор решения: compressor

А в таком уже нет

'''
import requests

def send_file():
    url = 'https://httpbin.org/post/files'
    files = {'payload': ('README.md', open('./data/README.md', 'rb'))}
    response = requests.post(url, files=files)
    return print(response.text)
'''

Кто нибудь знает причину такого поведения?

→ Ссылка