Estou usando o utilitário de linha de comando cURL para enviar HTTP POST para um serviço da web. Quero incluir o conteúdo de um arquivo como a entidade do corpo do POST. Eu tentei usar -d </path/to/filename>
, bem como outras variantes, com informações de tipo como --data </path/to/filename> --data-urlencode </path/to/filename>
etc ... o arquivo está sempre anexado. Eu preciso disso como a entidade do corpo.
207
cat file.txt | curl --data "@-" `(< url.txt )`
@-
manda o curl ler do stdin. Você também pode usar o redirecionamento(< x.txt )
para colocar o que quiser. Se você estiver usando o bash.--data-binary
no lugar de--data
.name:value
pares, como nome de usuário e senha, adicione os cabeçalhos necessários que correspondem ao que o serviço espera:--header: "<header_name>:<header_value>"
como uma única sequência.Sei que a pergunta foi respondida, mas no meu caso eu estava tentando enviar o conteúdo de um arquivo de texto para a API do Slack Webhook e, por algum motivo, a resposta acima não funcionou. De qualquer forma, foi isso que finalmente fez o truque para mim:
fonte
curl: argument list too long
nesse caso a resposta aceita é salva-vidascurl --data "@/path/to/filename" http://...
No meu caso,
@
causou algum tipo de problema de codificação, ainda prefiro o meu jeito antigo:fonte