Чтобы отправить (или загрузить) файл с помощью Curl, используйте параметры командной строки -d или -F и начните данные с символа @, за которым следует имя файла. Чтобы загрузить несколько файлов, повторите опцию -F несколько раз. Curl автоматически предоставит заголовок Content-Type, основанный на расширении файла, но вы можете указать собственный заголовок Content-Type с помощью опции командной строки -H. Файл будет отправлен с использованием метода HTTP POST. Вы можете указать другой метод HTTP с помощью параметра командной строки -X.
1 | curl -d @data.json https://example.com/echo/post/json |
Что такое Curl?
Curl (расшифровывается как Client URL) - это инструмент командной строки, работающий на платформах Windows, Linux и macOS и предназначенный для передачи данных с сервера или на сервер с помощью многих популярных сетевых протоколов, включая HTTP, HTTPS и FTP. Он имеет встроенную поддержку SSL, прокси-серверов, проверки сертификатов, HTTP-куки и аутентификации пользователей.
Что такое HTTP POST?
HTTP POST - это наиболее широко используемый метод протокола HTTP для отправки файлов и данных на сервер. Метод POST просит веб-сервер принять и обработать данные, содержащиеся в теле сообщения POST. Метод POST обычно используется для загрузки файлов, отправки HTML-форм и CRUD-операций при создании или обновлении ресурса на сервере. POST-запросы могут изменять состояние сервера и не являются идемпотентными, в отличие от методов GET и HEAD.
Как отправлять HTTP POST-запросы с помощью Curl?
Вы можете отправлять HTTP POST-запросы с помощью Curl, явно указав нужный HTTP-метод с помощью параметра командной строки -X POST. При отправке данных с помощью параметра командной строки -d, Curl автоматически выбирает метод HTTP POST. Если вы хотите, чтобы Curl использовал другой метод HTTP, например HTTP PUT, вы можете указать это с помощью параметра командной строки -X PUT.
1 | curl -X PUT -d '{"id": 1}' https://example.com/echo/post/json |
Как отправить файл с помощью Curl?
Чтобы загрузить файл, используйте опцию командной строки -d и начните данные с символа @. Если вы начинаете данные с @, остальное должно быть именем файла, из которого Curl будет считывать данные и отправлять их на сервер.
1 | curl -d @path/to/data.json https://example.com/echo/post/json |
Curl будет использовать расширение файла для отправки правильного типа данных MIME. Например, если вы отправляете JSON-файл с помощью параметров командной строки -d @data.json, Curl автоматически отправит HTTP-заголовок Content-Type: application/json вместе с вашим запросом. Если вы хотите отправить данные другого типа, вы можете использовать параметр командной строки -H и указать тип содержимого.
1 2 3 | curl https://example.com/echo/post/json -d @path/to/data.json -H "Content-Type: application/javascript" |
Синтаксис команды Curl post file
Общая форма команды Curl для отправки файла выглядит следующим образом:
Синтаксис POST-файла с помощью Curl
1 | curl -d @filename [URL] |
Где -d: @filename: файл для отправки на сервер
Как загрузить файлы с типом содержимого multipart/form-data с помощью Curl?
Браузеры используют тип содержимого multipart/form-data, когда вы загружаете несколько файлов на сервер через веб-формы. Чтобы отправить данные с типом содержимого multipart/form-data с помощью Curl, используйте параметр командной строки -F (или --form) и предваряйте значение параметра знаком @.
1 | curl -F logo=@filename [URL] |
В чем разница между опциями -d и -F?
Опция командной строки -d заставляет Curl отправлять данные на сервер в формате application/x-www-form-urlencoded. В то же время опция -F командной строки указывает Curl отправлять данные на сервер в формате multipart/form-data.
Как загрузить несколько файлов одновременно с помощью Curl?
Чтобы отправить на сервер несколько файлов одновременно, добавьте дополнительную опцию -F для каждого имени файла.
1 2 3 4 | curl [URL] -F file1=@filename1 -F file2=@filename2 -F file3=@filename3 |