使用 CURL 发布文件内容

Cor*_*lks 15 linux curl macos

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

我的一门课程有一个网页,它接受输入文本(预计是 Python 代码),然后给出一些标记化的响应。它旨在用作我们正在编写的 Python 词法分析器的参考。我正在尝试自动化我的测试过程,并且能够在不打开浏览器、来回复制文本等的情况下检查我的代码。所以这就是我想要做的:

我有一个名为“x.py”的示例 python 文件,我想将它发布到服务器,就好像我已经填写了该表格一样。我试过了:

curl --data-urlencode "file=@x.py" http://matt.might.net/apps/pylex/pylex.php
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这行不通,因为显然"@x.py"是作为我的文件内容发布的(也就是说,"file=@x.py"是发布的内容,而不是"file=<contents-of-x.py>")。我试过了--form--data但那些也没有用。

问题: 具体来说,如果我有一个包含非 url 编码内容的文件,并且该文件的内容需要成为 POST 的一部分并与特定名称(在本例中为file)相关联,那么完成此操作的正确方法是什么?

qme*_*ega 25

你想要的是"file@x.py"(不=)。

curl 联机帮助页

name@filename这将使 curl 从给定文件(包括任何换行符)加载数据,对该数据进行 URL 编码并在 POST 中传递它。name 部分附加了一个等号,结果是 name=urlencoded-file-content。请注意,该名称预计已经是 URL 编码的。