0

Pythonスクリプトからのバイナリデータ文字列をWebサーバーに投稿し、PHPスクリプトがそれを取得して保存する必要があります。Python側のphpスクリプトのPOST部分でエコーしたものは何でも受け取るので、実際のP​​OSTは機能すると思います。ただし、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!";

}

PythonPOSTスクリプトは次のようになります。

    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は、フォームデータコンテンツタイプの1つとして送信されるデータの$ _POST/REQUEST配列にのみPOST値を入力します。あなたの場合、次のように標準から直接バイナリデータを読み込む必要があります。

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