web-dev-qa-db-fra.com

Publier le contenu d'un fichier avec CURL

(Ce qui suit est en panne de retour, vous pouvez sauter à "Question:" Si vous le souhaitez)

Il y a une page Web pour l'un de mes cours qui accepte le texte de saisie (attendu d'être Python code), puis donne une réponse jointée. Il est destiné à être utilisé comme référence pour le Python Lexers nous écrivons. J'essaie d'automatiser mon processus de test et de pouvoir vérifier mon code sans ouvrir un navigateur, copier du texte, etc. Alors voici quoi J'essaie de faire:

J'ai un exemple python fichier 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 parce que apparemment "@x.py" devient posté comme contenu de mon fichier (c'est-à-dire "[email protected]" est ce qui se fait poster, pas "file=<contents-of-x.py>"). J'ai essayé --form et --data Mais ceux-ci n'ont pas fonctionné non plus.

Question: Spécifiquement, si j'ai un fichier avec des contenus codés sans URL, et que le contenu de ce fichier doit faire partie d'un ==POST et associé à un nom particulier (dans ce cas, file), quelle est la bonne façon d'accomplir cela?

15
Cornstalks

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

Du curlManpage :

Nom @ FileName Cela facilitera les données de charge de courroie à partir du fichier donné (y compris toutes les nouvelles lignes), encode URL-encoder ces données et transmettez-la dans le poste. La partie Nom obtient un signe égal annexé, ce qui entraîne un nom de fichier d'urlencode. Notez que le nom devrait déjà être codé de l'URL.

25
qmega

Je quitterai la réponse de QMEGA comme l'acceptée, mais je vais mettre une réponse que j'ai laissée dans un commentaire ici aussi pour une lecture plus facile. Une autre façon de faire cela est simplement en spécifiant "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
2
Cornstalks