Necesito hacer una solicitud POST a través de Curl desde la línea de comandos. Los datos para esta solicitud se encuentran en un archivo. Sé que a través de PUT esto se podría hacer con la --upload-file
opción.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"
Respuestas:
Estás buscando el
--data-binary
argumento:En el ejemplo anterior,
-i
imprime todos los encabezados para que pueda ver lo que está sucediendo y-X POST
hace explícito que esta es una publicación. Ambos pueden omitirse de manera segura sin cambiar el comportamiento en el cable. La ruta al archivo debe ir precedida de un@
símbolo, por lo quecurl
debe leer desde un archivo.fuente
.xml
@
parte es extremadamente importante!-d
harácurl
que se eliminen las nuevas líneas, pero--data-binary
no lo hará.Todo lo que necesita hacer es que el
--data
argumento comience con un@
:Por ejemplo, si tiene los datos en un archivo llamado,
stuff.xml
entonces haría algo como:El
stuff.xml
nombre del archivo puede ser reemplazado con una ruta relativa o completa al archivo:@../xml/stuff.xml
,@/var/tmp/stuff.xml
, ...fuente
--data "name@stuff"
.Si está utilizando datos de formulario para cargar archivos, en los que se debe especificar un nombre de parámetro, puede usar:
curl -X POST -i -F "parametername=@filename" -F "additional_parm=param2" host:port/xxx
fuente
parametername=
realmente me ayudó :)La mayoría de las respuestas son perfectas aquí, pero cuando llegué aquí por mi problema particular, tengo que cargar un archivo binario (hoja de cálculo XLSX) usando el método POST, veo que falta algo , es decir, generalmente no es solo el archivo que carga, puede que tenga más elementos de datos de formulario , como comentario a archivo o etiquetas a archivo, etc., como fue mi caso. Por lo tanto, me gustaría agregarlo aquí, ya que era mi caso de uso, para que pueda ayudar a otros.
fuente
Tuve que usar una conexión HTTP, porque en HTTPS hay un límite de tamaño de archivo predeterminado.
https://techcommunity.microsoft.com/t5/IIS-Support-Blog/Solution-for-Request-Entity-Too-Large-error/ba-p/501134
fuente