cURL multipart / form-data с файлами до Python запроса - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь перевести работающую команду cURL в эквивалентный запрос Python. Команда cURL выглядит следующим образом:

curl -X POST \
  http://localhost:3001/api/v1/document \
  -H 'Content-Type: multipart/form-data' \
  -F 'file=@/home/user1/test.pdf;type=application/pdf' \
  -F 'config=@config.json;type=application/json'

Я использую Python 3.6 и библиотеку request и рассматривает различные подходы. Одна из тех, которые IMHO должны работать, но выдает Ошибка: Multipart: Граница не найдена Ошибка на сервере следующая:

url = 'http://localhost:3001/api/v1/document'
headers  = {'Content-Type': 'multipart/form-data'}
file = "/home/user1/test.pdf"

files = {
     'file': (file, open(file, 'rb'),'type=application/pdf'),
      'config': ('config.json',open('config.json','rb'),'type=application/json')
 } 

r = requests.post(url, files=files, headers=headers )

Я смотрел на различные онлайн-переводчики ", включая https://curl.trillworks.com/, но ни один из них не дает рабочего ответа. Также пробовал ряд вариантов, которые я нашел в других постах, таких как удаление content-type в заголовке или использование json.dump() вместо функции open(), но все же безуспешно.

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 21 марта 2020

Решение от Бертран Мартел в итоге добилось цели:

  1. Удаление headers
  2. Удаление 'type=' из файлов pdf и json.

Рабочий раствор выглядит следующим образом:

url = 'http://localhost:3001/api/v1/document'

file = "/home/user1/test.pdf"

files = {
     'file': (file, open(file, 'rb'),'application/pdf'),
      'config': ('config.json',open('config.json','rb'),'application/json')
 } 

r = requests.post(url, files=files)
...