2011-09-20 117 views
6

我已经搜索了这个答案,但没有找到任何可行的或完全符合我的问题的东西。Unix cURL使用文件中的内容POST到特定变量

使用Unix cURL,我需要将一个key/val对发布到服务器。密钥将是“MAC”,并且新行分隔的MAC地址文件的内容将成为此POST的VALUE值。

我已经试过:

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

我见过的其他形式在本网站提到卷曲,使用--url-encode表示,它是不是我的系统上卷曲的有效选项...

你如何张贴文件的内容为值使用UNIX cURL在POST中的特定键?

+0

如果您使用的UNIX命令行,然后你使用一个壳为好。它将通过为bash或ksh添加标签或通过添加标签来提高您获得有用答案的机会?祝你好运。谢谢, – shellter

+0

补充说。 – Rimer

回答

4

根据卷曲手册页-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 [email protected] http://example.com 

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

请注意,如果您想在参数上发送URL编码字符串,而不使用多部分表单编码,则应使用'curl --data-urlencode param @ file http:// example.com'参见http:// superuser .COM /问题/ 543762 /发布-A-文件 - 内容 - 与卷曲 –