Den Inhalt einer Datei mit CURL veröffentlichen


15

(Das Folgende ist eine Hintergrundgeschichte. Sie können zu "Frage:" springen, wenn Sie möchten.)

Es gibt eine Webseite für einen meiner Kurse , die Eingabetext (voraussichtlich Python-Code) akzeptiert und anschließend eine symbolisierte Antwort gibt. Es soll als Referenz für die Python-Lexer dienen, die wir schreiben. Ich versuche, meinen Testprozess zu automatisieren und in der Lage zu sein, meinen Code zu überprüfen, ohne einen Browser zu öffnen, Text hin und her zu kopieren usw. Ich versuche also Folgendes zu tun:

Ich habe eine Beispiel-Python-Datei mit dem Namen "x.py" und möchte sie auf dem Server veröffentlichen, als hätte ich dieses Formular ausgefüllt. Ich habe es versucht:

curl --data-urlencode "file=@x.py" http://matt.might.net/apps/pylex/pylex.php

Aber leider funktioniert das nicht richtig, weil anscheinend "@x.py"als mein Dateiinhalt gepostet wird (das ist, "file=@x.py"was gepostet wird, nicht "file=<contents-of-x.py>"). Ich habe es versucht --formund --datadie haben auch nicht funktioniert.

Frage: Wenn ich eine Datei mit nicht url-codiertem Inhalt besitze und der Inhalt dieser Datei Teil eines POST sein und einem bestimmten Namen zugeordnet werden muss (in diesem Fall file), wie kann dies korrekt durchgeführt werden? ?



Warum nicht als Antwort posten? Sie können Ihre eigene Frage beantworten und dann in ~ 2 Tagen oder etwas (nicht sicher, wie lange) können Sie es akzeptieren.
BenjiWiebe

@BenjiWiebe: Okay, ich werde es posten.
Cornstalks

Antworten:


25

Was Sie wollen, ist "file@x.py"(nein =).

Aus der curl Manpage :

name @ filename Hiermit werden die Daten aus der angegebenen Datei (einschließlich aller Zeilenumbrüche) per URL-Codierung geladen und im POST weitergeleitet. An den Namensteil wird ein Gleichheitszeichen angehängt, das zu name = urlencoded-file-content führt. Beachten Sie, dass der Name voraussichtlich bereits URL-codiert ist.


2

Ich werde die Antwort von qmega als die akzeptierte Antwort belassen, aber ich werde eine Antwort, die ich hinterlassen habe, auch hier in einen Kommentar einfügen, um das Lesen zu erleichtern. Ein anderer Weg, dies zu tun, ist einfach durch Spezifizieren "file=`cat x.py`". Für den vollständigen Befehl wäre es:

curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.