Enviar POST Solicitud con los Datos Especificados en el Archivo a través de Curl
Necesito hacer una solicitud POST vía Curl desde la línea de comandos. Los datos de esta solicitud se encuentran en un archivo. Sé que via PUT esto podría hacerse con la opción --upload-file
.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
4 answers
Estás buscando el argumento --data-binary
:
curl -i -X POST host:port/post-file \
-H "Content-Type: text/xml" \
--data-binary "@path/to/file"
En el ejemplo anterior, -i
imprime todos los encabezados para que puedas ver lo que está pasando, y -X POST
hace explícito que esto es un post. Ambos se pueden omitir de forma segura sin cambiar el comportamiento del cable. La ruta al archivo debe ir precedida por un símbolo @
, de modo que curl
sepa leer de un archivo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-18 22:54:15
Necesito hacer una solicitud POST vía Curl desde la línea de comandos. Los datos de esta solicitud se encuentran en un archivo...
Todo lo que necesita hacer es que el argumento --data
comience con un @
:
curl -H "Content-Type: text/xml" --data "@path_of_file" host:port/post-file -path
Por ejemplo, si tienes los datos en un archivo llamado stuff.xml
entonces harías algo como:
curl -H "Content-Type: text/xml" --data "@stuff.xml" host:port/post-file-path
El nombre de archivo stuff.xml
se puede reemplazar por una ruta relativa o completa al archivo: @../xml/stuff.xml
, @/var/tmp/stuff.xml
, ...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-09 13:23:36
Si está utilizando datos de formulario para cargar un archivo, en el que se debe especificar un nombre de parámetro, puede usar:
curl -X POST -i -F parametername=@filename host:port/xxx
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-05 10:32:20
La mayoría de las respuestas son perfectas aquí, pero cuando aterricé aquí para mi problema particular, tengo que cargar binary file
(hoja de cálculo XLSX) usando POST, veo una cosa que falta , es decir, generalmente no es solo el archivo que carga, es posible que tenga más elementos de datos de formulario , me gusta comment to file or tags to file etc como fue mi caso. Por lo tanto, me gustaría agregarlo aquí, ya que era mi caso de uso, para que pudiera ayudar a otros.
curl POST -F comment=mycomment -F file_type=XLSX -F file_data=@/your/path/to/file.XLSX http://yourhost.example.com/api/example_url
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-03 11:08:35