Como colocar o conteúdo do arquivo POST usando cURL?

4

Eu quero fazer um HTTP POST do conteúdo (como uma string) de um arquivo local localizado em path/to/my-file.txt para um ponto de extremidade de URL em http://example.com/ .

Por exemplo, posso querer fazer o seguinte:

  1. Extraia o conteúdo do arquivo my-file.txt como uma string.
  2. URL codifica a string.
  3. Armazena a string codificada como uma variável chamada foo .

Depois faça algo assim:

curl -d "data=foo" http://example.com/

(Eu realmente não preciso da variável foo . É apenas uma maneira conveniente de descrever minha pergunta.)

Quais são os comandos que eu precisaria para executar isso? Preciso escrever um script de shell? Se sim, como isso pode parecer?

    
por Mowzer 19.03.2016 / 06:24

2 respostas

7

De acordo com a última seção de -d em man curl :

Se você iniciar os dados com a letra @, o restante deverá ser um nome de arquivo para ler os dados ou, se desejar, curl para ler os dados de stdin. Vários arquivos também podem ser especificados. Publicar dados de um arquivo chamado 'foobar' seria feito com --data @foobar. Quando o comando --data é instruído a ler de um arquivo como esse, os retornos de carro e as novas linhas serão eliminados.

Isso é que você não precisa fazer nada extravagante apenas preencha seu nome de arquivo com um @ .

    
por 19.03.2016 / 10:52
4

Para ser explicitamente claro, a resposta aceita sugere:

curl -d "data=@path/to/my-file.txt" http://example.com/

A referência manual está aqui . (Pesquise na página por -d, --data <data> ).

Também veja esta resposta SE e este também para multi-partes .

    
por 19.03.2016 / 11:38