(以下は裏話です。必要に応じて[質問:]にジャンプできます)
私のコースの1つにWebページがあります 入力テキスト(Pythonコードであることが予期される)を受け入れ、トークン化された応答を返します。これは、作成しているPythonレクサーのリファレンスとして使用するためのものです。私はテストプロセスを自動化し、ブラウザーを開いたり、テキストを前後にコピーしたりすることなくコードをチェックできるようにしています。つまり、ここで私がやろうとしていることは次のとおりです。
「x.py」という名前のサンプルpythonファイルがあり、そのフォームに入力したかのようにサーバーに投稿したいと思います。私はもう試した:
curl --data-urlencode "[email protected]" http://matt.might.net/apps/pylex/pylex.php
ただし、残念ながら、ファイルのコンテンツとして"@x.py"
が投稿されているようです(つまり、"[email protected]"
は、投稿されているものであり、"file=<contents-of-x.py>"
ではありません)。私は--form
と--data
を試しましたが、どちらもうまくいきませんでした。
質問:具体的には、URLエンコードされていないコンテンツを含むファイルがあり、このファイルのコンテンツをPOSTおよび特定の名前(この場合はfile
)に関連付けられている場合、これを行う正しい方法は何ですか?
あなたが欲しいのは"[email protected]"
(番号 =
)。
curl
から manpage :
name @ filenameこれにより、特定のファイル(改行を含む)からデータをcurlロードし、そのデータをURLエンコードしてPOSTに渡します。名前の部分には等号が追加され、name = urlencoded-file-contentになります。この名前はすでにURLエンコードされていることが想定されていることに注意してください。
Qmegaの回答は承認済みのままにしておきますが、読みやすくするために、ここにもコメントにコメントを残しておきます。これを行うもう1つの方法は、"file=`cat x.py`"
を指定することです。完全なコマンドの場合は、次のようになります。
curl --data-urlencode "file=`cat x.py`" http://matt.might.net/apps/pylex/pylex.php