Как преобразовать почтовый запрос python3 с файлами и параметрами в curl - PullRequest
0 голосов
/ 20 мая 2019

У меня есть скрипт python3, который корректно загрузил изображение на сайт, и я хочу сделать то же самое с помощью команды curl.

import requests


url = 'http://1.2.3.4/upload'
files = {'image': open('foo.jpg', 'rb')}
params = {'bar': 'baz'}
requests.post(url, files=files, params=params)
# incorrect
curl -XPOST -F 'image=foo.jpg' -d 'bar=baz' 'http://1.2.3.4/upload'

Я ожидаю, что команда, подобная этой, загрузит foo.jpg с параметром baz, но, похоже, -F игнорируется curl, когда указано -d.

Я хочу curl с указанным именем файла, а не целые данные файла внутри командыкак curlify библиотека делает.

1 Ответ

1 голос
/ 20 мая 2019
  1. Вы не можете использовать -F и -d вместе, первый переопределяет последний,
  2. Вам необходимо поставить префикс имени файла со знаком @,
  3. -F подразумевает -X POST, и когда он используется, все данные отправляются как данные формы, поэтому bar=baz не будет добавляться к URL, как с -G и -d, вам необходимо добавить его вручную.
curl -F 'image=@foo.jpg' 'http://1.2.3.4/upload?bar=baz'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...