POSTAGE DU CONTENU D'UN FICHIER AVEC CURL

15

(Ce qui suit est une trame de fond, vous pouvez passer à "Question:" si vous le souhaitez)

Il y a une page Web pour l'un de mes cours qui accepte le texte d'entrée (qui devrait être du code Python) et donne ensuite une réponse symbolisée. Il est destiné à être utilisé comme référence pour les lexers Python que nous écrivons. J'essaie d'automatiser mon processus de test et de pouvoir vérifier mon code sans ouvrir de navigateur, copier du texte d'avant en arrière, etc. Voici donc ce que j'essaie de faire:

J'ai un exemple de fichier python nommé "x.py" et je veux le poster sur le serveur comme si j'avais rempli ce formulaire. J'ai essayé:

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

Mais malheureusement, cela ne fonctionne pas correctement, car apparemment, il "@x.py"est publié comme contenu de mon fichier (c'est-à- "[email protected]"dire ce qui est publié, non "file=<contents-of-x.py>"). J'ai essayé --formet ça --datan'a pas marché non plus.

Question: Plus précisément, si j'ai un fichier dont le contenu n'est pas encodé en URL, et que le contenu de ce fichier doit faire partie d'un POST et être associé à un nom particulier (dans ce cas, file), quelle est la bonne façon d'y parvenir ?

Cornstalks
la source
Je viens de trouver une façon de le faire: "file=`cat x.py`"
Cornstalks
Pourquoi ne pas poster cela comme réponse? Vous pouvez répondre à votre propre question, puis en ~ 2 jours ou quelque chose (vous ne savez pas combien de temps) vous pouvez l'accepter.
BenjiWiebe
@BenjiWiebe: D'accord, je vais le poster.
Cornstalks

Réponses:

25

Ce que vous voulez, c'est "[email protected]"(non =).

Depuis la curl page de manuel :

nom @ nomfichier Cela fera boucler les données du fichier donné (y compris les nouvelles lignes), encodera ces données par URL et les transmettra dans le POST. La partie nom est accompagnée d'un signe égal, ce qui donne nom = contenu-fichier-codé-url. Notez que le nom devrait déjà être encodé en URL.

qmega
la source
2

Je laisserai la réponse de qmega comme acceptée, mais je mettrai une réponse que j'ai laissée dans un commentaire ici aussi pour une lecture plus facile. Une autre façon de procéder consiste simplement à spécifier le type "file=`cat x.py`". Pour la commande complète, ce serait:

curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php
Cornstalks
la source