2012-11-01 1 views
0

파이썬 스크립트에서 웹 서버로 바이너리 데이터 문자열을 게시하여 PHP 스크립트가 가져와 저장해야하는 바이너리 데이터 문자열을 게시하고 싶습니다. 파이썬 측에서 PHP 스크립트의 POST 부분에 어떤 내용이든 반영되므로 실제 POST가 작동합니다.파이썬에서 http를 통해 바이너리 데이터를 게시하는 경우 -> 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!"; 

} 

및 파이썬 POST 스크립트는 다음과 같습니다 : 그러나, 23 바이트 나 strlen ($이 _ POST는 [ '데이터'])는 데이터를 pickj하는 0 내 PHP 스크립트를 유지를 게시하고있어 다음과 같습니다 :

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() 

왜 내 데이터가 통과하지 않는 것일까 요?

답변

3

PHP는 폼 데이터 콘텐츠 유형 중 하나로 전송되는 데이터에 대한 $ _POST/요청 배열에 값을 게시 웁니다, 감사합니다. 귀하의 경우에는 다음과 같이 표준에서 직접 바이너리 데이터를 읽어야합니다.

$postdata = file_get_contents("php://input"); 
+0

감사합니다. 마이크, 시간이 지남에 따라 업무를 절약 할 수 있습니다. :) – cerr

관련 문제