Unix cURL POST 使用文件中的内容到特定变量

发布于 2024-12-05 17:18:14 字数 427 浏览 1 评论 0原文

我已经搜索过这个答案,但没有找到任何有效或完全符合我的问题的答案。

使用 Unix cURL,我需要将键/值对发布到服务器。密钥将是“MACs”,换行符分隔的 MAC 地址文件的内容将是此 ​​POST 的 VALUE。

我尝试过:

curl -d @filename http://targetaddress.com,但是当目标接收传入的 POST,POST var 为空。 (PHP 正在接收)。

我在这个网站上看到过其他形式的curl,使用--url-encode,这表明它不是我系统上curl的有效选项...

你如何发布a的内容使用 UNIX cURL 将文件作为 POST 中特定键的值?

I've searched for this answer but not found anything that works or that completely matches my problem.

Using Unix cURL, I need to POST a key/val pair to a server. The key will be "MACs", and the contents of a file of newline separated MAC addresses will be the VALUE for this POST.

I've tried:

curl -d @filename http://targetaddress.com, but when the target receives the incoming POST, the POST var is empty. (PHP is receiving).

I've seen other forms of curl mentioned on this site, using --url-encode which says it is not a valid option for curl on my system...

How do you POST the contents of a file as a value to a specific key in a POST using UNIX cURL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溺深海 2024-12-12 17:18:14

根据curl手册页,-d与--data-ascii相同。要将数据作为二进制发布,请使用 --data-binary 并使用 url 编码发布,请使用 --data-urlencode。因此,由于您的文件不是 URL 编码,如果您想发送 URL 编码,请使用:

curl --data-urlencode @file http://example.com

如果您的文件包含类似以下内容:

00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff

这将导致收到类似以下内容的 POST 请求:

POST / HTTP/1.1
User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
Host: example.com
Accept: */*
Content-Length: 90
Content-Type: application/x-www-form-urlencoded

00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A

如果您想添加名称,您可以使用多部分形式编码某些内容喜欢:

curl -F MACS=@file http://example.com

curl -F MACS=<file http://example.com

According to curl man page -d is the same as --data-ascii. To post the data as binary use --data-binary and to post with url encoding use --data-urlencode. So as your file is not URL encoded if you want to send it URL encoded use:

curl --data-urlencode @file http://example.com

If you file contains something like:

00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff
00:0f:1f:64:7d:ff

this will result in a POST request received something like:

POST / HTTP/1.1
User-Agent: curl/7.19.5 (i486-pc-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.15
Host: example.com
Accept: */*
Content-Length: 90
Content-Type: application/x-www-form-urlencoded

00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A00%3A0f%3A1f%3A64%3A7d%3Aff%0A

If you want to add a name you can use multipart form encoding something like:

curl -F MACS=@file http://example.com

or

curl -F MACS=<file http://example.com
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文