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-fileopción.
curl host:port/post-file -H "Content-Type: text/xml" --data "contents_of_file"

Respuestas:
Estás buscando el
--data-binaryargumento:En el ejemplo anterior,
-iimprime todos los encabezados para que pueda ver lo que está sucediendo y-X POSThace 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 quecurldebe leer desde un archivo.fuente
.xml@parte es extremadamente importante!-dharácurlque se eliminen las nuevas líneas, pero--data-binaryno lo hará.Todo lo que necesita hacer es que el
--dataargumento comience con un@:Por ejemplo, si tiene los datos en un archivo llamado,
stuff.xmlentonces haría algo como:El
stuff.xmlnombre 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/xxxfuente
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