Cómo enviar el contenido del archivo como entidad corporal usando cURL
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 entidad del cuerpo de la POST. He intentado usar -d </path/to/filename>
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 corporal.
Creo que estás buscando la @filename
sintaxis, por ejemplo:
quitar nuevas líneas
curl --data "@/path/to/filename" http://...
mantener nuevas líneas
curl --data-binary "@/path/to/filename" http://...
curl eliminará todas las nuevas líneas del archivo. Si desea enviar el archivo con nuevas líneas intactas, utilícelas --data-binary
en lugar de --data
Sé que la pregunta ha sido respondida, pero en mi caso estaba intentando 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 funcionó para mí:
curl -X POST -H --silent --data-urlencode "payload={\"text\": \"$(cat file.txt | sed "s/\"/'/g")\"}" https://hooks.slack.com/services/XXX