Розміщення вмісту файлу за допомогою CURL


15

(Далі є історія, ви можете перейти до пункту "Питання:" якщо ви хочете)

Існує веб-сторінка одного з моїх курсів, яка приймає вхідний текст (очікується, що це код Python), а потім дає певну токенізовану відповідь. Він призначений для використання в якості посилань для лекерів Python, про які ми пишемо. Я намагаюся автоматизувати свій тестуючий процес і бути в змозі перевірити свій код, не відкриваючи браузер, копіюючи текст вперед і назад, і т. Д. Отже, ось що я намагаюся зробити:

У мене є зразок файлу python з назвою "x.py", і я хочу опублікувати його на сервері так, як ніби я заповнив цю форму. Я спробував:

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

Але, на жаль, це не працює належним чином, оскільки, мабуть "@x.py", публікується як вміст мого файлу (тобто те, "file=@x.py"що публікується, а не "file=<contents-of-x.py>"). Я пробував --formі , --dataале ті , які не працювали або.

Питання: Зокрема, якщо у мене є файл із вмістом, не кодованим URL-адресою, і вміст цього файлу повинен бути частиною POST та пов’язаним з певним іменем (у цьому випадку file), який правильний спосіб досягти цього ?



Чому б не опублікувати це як відповідь? Ви можете відповісти на власне запитання, а потім через ~ 2 дні або щось (не знаю, як довго) ви можете прийняти його.
BenjiWiebe

@BenjiWiebe: Добре, я опублікую його.
Cornstalks

Відповіді:


25

Те, що ви хочете, - це "file@x.py"(ні =).

З curl сторінки керівництва :

name @ ім'я файлу Це дозволить згорнути дані завантаження із заданого файлу (включаючи будь-які нові рядки), URL-кодувати ці дані та передавати їх у POST. Іменна частина додає знак рівності, що призводить до імені = urlencoded-file-content. Зверніть увагу, що очікується, що ім'я вже буде закодовано URL-адресою.


2

Я залишу відповідь qmega як прийняту, але я напишу відповідь, яку я залишив у коментарі і тут для легшого читання. Ще один спосіб зробити це - просто вказавши "file=`cat x.py`". Для повної команди було б:

curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.