Использование двоичных данных в запросах Python - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь представить следующий оператор curl в python:

curl --data-binary @sample.png --data project = 23423233 -H 'X-API-KEY: YOUR API KEY, User-Agent: AppName (name@example.com)' https://files.proofhub.com/files/upload

Я уже сделал несколько запросов на публикацию и получение, однако, так как в этом случае используется опция data, я не могу понять, какЯ бы выполнил это, используя запросы.

Я опубликую свой текущий код:

data = open(r"C:\Users\dlogan.CLEARDATA\Desktop\ProofHub Upload\test.txt",'rb')

create_headers = {'X-API-KEY': '', 'Content-Type': 'application/json', 'User-Agent': '@cleardata.co.uk'}

r = requests.post('https://cleardata.proofhub.com/files/upload', data=data, headers=create_headers)

Кто-нибудь знает, как мне добавить файл?

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Кажется, проблема в том, что вам не хватает косой черты '/' в конце URL. Без косой черты сервер, кажется, перенаправляет на несуществующую страницу, и вы получаете 404.

Чтобы исправить, просто добавьте косую черту:

requests.post('https://cleardata.proofhub.com/files/upload/', data=data, headers=create_headers)
#                                               Add slash ^
1 голос
/ 23 апреля 2019

Я думаю, вам нужно опубликовать файл как данные формы, используя аргумент files.

files = {'file': open(r"C:\Users\dlogan.CLEARDATA\Desktop\ProofHub Upload\test.txt",'rb')
} 
create_headers = {'X-API-KEY': '', 'Content-Type': 'application/json', 'User-Agent': '@cleardata.co.uk'}
r = requests.post('https://cleardata.proofhub.com/files/upload', files=files, headers=create_headers)

Вам нужно правильно указать имя файла - я не вижу форму сообщения, поэтому не знаю, что должно быть.

...