0

我想将 Python 脚本中的二进制数据字符串发布到 Web 服务器,PHP 脚本应该在其中提取并存储它。我收到了我在 Python 端的 php 脚本的 POST 部分中回显的任何内容,因此我假设实际的 POST 有效。但是,我发布了 23 个字节,而 strlen($_POST['data']) 保持为 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()

为什么我的数据似乎没有通过,我想知道?

谢谢,

4

1 回答 1

3

对于作为表单数据内容类型之一发送的数据,PHP 只会将发布的值填充到 $_POST/REQUEST 数组中。在您的情况下,您需要直接从标准中读取二进制数据,如下所示:

$postdata = file_get_contents("php://input"); 
于 2012-11-02T00:04:41.897 回答