curl: опубликовать поле в многочастной форме под названием file? - PullRequest
0 голосов
/ 26 мая 2018

Я хочу заменить это:

curl -F 'file=@a.html' http://localhost:8080/convert

на

curl -F 'file=<html><body>Inline!</body></html>' http://localhost:8080/convert

, но это просто дает мне: curl: (26) couldn't open file "html><body>a</body></html>"

с помощью curl -d неработать (предположительно потому, что он не генерирует составное тело?)

Как я могу встраивать содержимое в параметр curl вместо ссылки на реальный файл?

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

использует аргумент --form-string вместо -F, например,

curl --form-string 'file=<html><body>Inline!</body></html>' http://localhost:8080/convert

, что дает

POST /convert HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.59.0
Accept: */*
Content-Length: 172
Content-Type: multipart/form-data; boundary=------------------------2e4ba7fc50e9eec8

--------------------------2e4ba7fc50e9eec8
Content-Disposition: form-data; name="file"

<html><body>Inline!</body></html>
--------------------------2e4ba7fc50e9eec8--
0 голосов
/ 27 мая 2018

Как насчет этого ответа?Я думаю, что может быть несколько решений.Поэтому, пожалуйста, подумайте об этом как об одном из них.Чтобы отправить содержимое a.html с данными multipart / form, необходимо создать тело запроса и отправить его.Например, этот ответ предполагает следующее:

  • a.html is <html><body>Inline!</body></html>.
  • Вы используете curl на bash.

ЗапросТело выглядит следующим образом.

--boundaryboundary
Content-Disposition: form-data; name="file"; filename="a.html"
Content-Type: text/html

<html><body>Inline!</body></html>
--boundaryboundary--

Замените разрыв строки на \r\n и отправьте это.

--boundaryboundary\r\nContent-Disposition: form-data; name="file"; filename="a.html"\r\nContent-Type: text/html\r\n\r\n<html><body>Inline!</body></html>\r\n--boundaryboundary--

Модифицированный пример скручивания:

Модифицированный пример скручиванияследующее.Content-Type is multipart/form-data; boundary=boundaryboundary.

curl -X POST \
  -H 'Content-Type: multipart/form-data; boundary=boundaryboundary' \
  -d $'--boundaryboundary\r\nContent-Disposition: form-data; name="file"; filename="a.html"\r\nContent-Type: text/html\r\n\r\n<html><body>Inline!</body></html>\r\n--boundaryboundary--' \
  'http://localhost:8080/convert'

Ссылка:

Если это былоне то, что ты хочешь, извини.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...