使用 CURL 发布文件内容

使用 CURL 发布文件内容

(以下是背景故事,如果你愿意的话可以跳到“问题:”)

这是我的其中一门课程的网页它接受输入文本(预计是 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)相关联,那么实现此目的的正确方法是什么?

答案1

你想要的是(不)。"[email protected]"=

来自curl 手册页

名称@文件名这将使 curl 从给定文件加载数据(包括任何换行符),对该数据进行 URL 编码,并将其传递到 POST 中。名称部分会附加一个等号,从而得到 name=urlencoded-file-content。请注意,该名称应该已经进行了 URL 编码。

答案2

我将保留 qmega 的答案作为可接受的答案,但为了便于阅读,我也会在此处放置我留在评论中的答案。另一种方法是简单地指定 ping "file=`cat x.py`"。对于完整命令,它将是:

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

相关内容