我想将一个二进制数据字符串从Python脚本发布到一个Web服务器,PHP脚本应该将其存取并存储起来。我收到了我在Python端的PHP脚本的POST部分中回应的任何内容,所以我假设,实际的POST工作。但是,我发布了23个字节和strlen($ _ POST ['数据'])保持为0。 我用来获取数据的PHP脚本如下所示:
if (isset($_REQUEST["f"]) && $_REQUEST["f"]=="post_status") {
$fname = "status/".time().".bin";
if (file_exists($fname)) {
$fname = $fname."_".rand();
if (file_exists($fname)) {
$fname = $fname."_".rand();
}
}
echo strlen($_POST['data'])." SUCCESS!";
}
并且Python POST脚本如下所示:
data = statusstr
host = HOST
func = "post_status"
url = "http://{0}{1}?f={2}".format(host,URI,func)
print url
r = urllib2.Request(url, data,{'Content-Type': 'application/octet-stream'})
r.get_method = lambda: 'PUT'
response = urllib2.urlopen(r)
print "RESPONSE " + response.read()
为什么我的数据似乎没有通过,我想知道?
谢谢,
答案 0 :(得分:3)
PHP只会将已发布的值填充到$ _POST / REQUEST数组中,以用于作为表单数据内容类型之一发送的数据。在您的情况下,您需要直接从标准读取二进制数据,如下所示:
$postdata = file_get_contents("php://input");