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 "file=@x.py" 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-à- "file=@x.py"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 ?



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 "file@x.py"(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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.