Estoy usando la utilidad de línea de comando cURL para enviar HTTP POST a un servicio web. Quiero incluir el contenido de un archivo como la entidad del cuerpo de la POST. He intentado usar -d </path/to/filename>así como otras variantes con información de tipo como --data </path/to/filename> --data-urlencode </path/to/filename>etc. El archivo siempre está adjunto. Lo necesito como entidad del cuerpo.
208

cat file.txt | curl --data "@-" `(< url.txt )`@-le dice a curl que lea desde stdin. También puedes usar la redirección(< x.txt )para poner lo que quieras. Si estás usando bash.--data-binaryen lugar de--data.name:valuepares, como un nombre de usuario y una contraseña, agregue los encabezados necesarios que coincidan con lo que el servicio espera:--header: "<header_name>:<header_value>"como una sola cadena.Sé que la pregunta ha sido respondida, pero en mi caso estaba tratando de enviar el contenido de un archivo de texto a la API de Slack Webhook y, por alguna razón, la respuesta anterior no funcionó. De todos modos, esto es lo que finalmente hizo el truco para mí:
fuente
curl: argument list too longen ese caso la respuesta aceptada es un salvavidascurl --data "@/path/to/filename" http://...En mi caso,
@causó algún tipo de problema de codificación, todavía prefiero mi forma anterior:fuente