Не могат да се качват двоични данни чрез заявки на python

Опитвам се да преведа следната команда curl в извикване на API за заявка на python:

curl --header "Content-Type: application/octet-stream" --request PUT --data-binary @content.tar.gz <upload_url>

Стигнах дотам да направя:

import requests

data = open("content.tar.gz", "rb").read()

response = requests.put(
    <upload_url>,
    headers={"Content-Type": "application/octet-stream"},
    data=data
)

Въпреки че кодът на състоянието от горното извикване е 200, файлът content.tar.gz не изглежда да се качва, докато командата curl работи безупречно.

Разгледах много различни въпроси относно превода на curl команди в заявки на python, но не открих причини защо това не трябва да работи, когато командата curl го прави.

Надявам се, че можете да ми дадете някои насоки за това, което правя грешно.


person navanitachora    schedule 13.04.2021    source източник
comment
Колко голям е файлът, който се опитвате да качите?   -  person bagljas    schedule 14.04.2021
comment
1,5 K като размер изобщо не е много голям.   -  person navanitachora    schedule 14.04.2021
comment
Реших, че може би имате нужда от нещо подобно, ако файлът е твърде голям: stackoverflow.com/a/35784072/7109330 Може би можете да проверите curl с подробна опция, за да видите какво всъщност се случва, защото curl обработва някои HTTP сложности зад кулисите. Ако имате достъп до регистрационни файлове от страната на сървъра, проверката им може да помогне. Иначе кодът ви изглежда добре. Опитах го срещу този прост httpсървър, поддържащ PUT: gist.github.com/fabiand/5628006 и той работеше.   -  person bagljas    schedule 14.04.2021