POSTANDO o conteúdo de um arquivo com CURL

12

(O que se segue é uma história de fundo, você pode pular para "Pergunta:" se quiser)

Há uma página da Web para um dos meus cursos que aceita texto de entrada (esperado para ser código Python) e, em seguida, dá alguma resposta tokenizada. Ele deve ser usado como referência para os lexers em Python que estamos escrevendo. Estou tentando automatizar meu processo de teste e poder verificar meu código sem abrir um navegador, copiar texto para trás e para frente etc. Então, eis o que estou tentando fazer:

Eu tenho um arquivo python de amostra chamado "x.py" e quero publicá-lo no servidor como se eu tivesse preenchido esse formulário. Eu tentei:

curl --data-urlencode "[email protected]" http://matt.might.net/apps/pylex/pylex.php

Mas, infelizmente, isso não está funcionando corretamente porque, aparentemente, "@x.py" está sendo publicado como conteúdo do meu arquivo (ou seja, "[email protected]" é o que está sendo publicado, não "file=<contents-of-x.py>" ). Eu tentei --form e --data , mas eles não funcionaram.

Pergunta: Especificamente, se eu tiver um arquivo com conteúdo não codificado em url, e o conteúdo desse arquivo precisar fazer parte de um POST e associado a um nome específico (nesse caso, file ), qual é a maneira correta de realizar isso?

    
por Cornstalks 30.01.2013 / 04:01

2 respostas

22

O que você quer é "[email protected]" (no = ).

Na página de manual curl :

name@filename This will make curl load data from the given file (including any newlines), URL-encode that data and pass it on in the POST. The name part gets an equal sign appended, resulting in name=urlencoded-file-content. Note that the name is expected to be URL-encoded already.

    
por 30.01.2013 / 04:39
1

Vou deixar a resposta de qmega como a resposta aceita, mas vou colocar uma resposta que deixei em um comentário aqui também para facilitar a leitura. Uma outra maneira de fazer isso é simplesmente especificando "file='cat x.py'" . Para o comando completo, seria:

curl --data-urlencode "file='cat x.py'" http://matt.might.net/apps/pylex/pylex.php
    
por 23.09.2013 / 00:02