2014-12-03 2 views
0

php curl을 사용하여 geoserver에 REST 요청을 보내고 바이너리 응답을받습니다.php 클라이언트에 curl의 바이너리 응답을 보냅니다.

$curl = curl_init(); 
    $url = 'http://localhost:8080/geoserver/worksp/wms'; 
    $query_str = "service=WMS&LAYERS=" . $_GET['LAYERS'] . "&TRANSPARENT=" . $_GET['TRANSPARENT'] . "&VERSION=" . $_GET['VERSION'] . "&REQUEST=" . $_GET['REQUEST'] . "&STYLES=" . $_GET['STYLES'] ; 
    $query = $url . '?' . $query_str; 
    //var_dump($query); 
    curl_setopt_array($curl, array(
     CURLOPT_RETURNTRANSFER => 1, 
     CURLOPT_URL => $query, 
     CURLOPT_USERAGENT => 'Codular Sample cURL Request', 
     CURLOPT_BINARYTRANSFER => true, 
     CURLOPT_HEADER => false 
    )); 
    set_time_limit(30);      // set time in secods for PHP 
    curl_setopt($curl, CURLOPT_TIMEOUT, 30); 
    curl_setopt($curl, CURLOPT_USERPWD, "admin:geoserver"); 
    $response = curl_exec($curl); 
    curl_close($curl); 

서버 내가 $response 변수에 저장 이진 데이터 int로서 나에게 PNG 이미지를 전송합니다.
위의 코드에서 $response은 png 이미지의 이진 데이터입니다. 어떻게 파일로 저장하지 않고 클라이언트에게 보낼 수 있습니까?
또 다른 질문은 데이터 형식이 $response 인 이유는 무엇입니까?

+0

을 위해서 var_dump'의 출력은 무엇인가 ($ 응답)의'위해서 var_dump – Bijan

+0

출력 : PNG) متی :»««»«»««; ,, آۀۀآإإاتینتامنتیکتیب نتیب اژييآ«تاريال]];, ريال,,,,,,,, ريالريال, –

+0

'echo $ response'? 어쩌면 header() 호출을 먼저 호출하여 실제로 클라이언트에게 png –

답변

-1

당신은 파일로 바이너리 데이터를 저장하고 클라이언트에 보낼 수 있습니다

// place the above code here 
    $saveTo = "c:\\temp.png"; 
    if (file_exists($saveTo)) { 
     unlink($saveTo); 
    } 
    $fp = fopen($saveTo, 'wb'); 
    fwrite($fp, $resp); 
    fclose($fp); 

    header("Content-type:image/png"); 
    $fp = fopen($saveTo, 'rb'); 
    fpassthru($fp); 
    exit(); 

또는 echo를 사용할 수 있습니다

echo $response; 
+1

을 "파일에 저장하지 않고"보내고 있다고 알릴 수 있습니다. 왜이 모든 파일이 단순한'echo $ 응답'을했을 때 비웃는가? –

+1

@Dariush Jafari plz, 답을 없애십시오. 나는 어떤 단어라도 찾을 수 없다 ... 나는 위의 코드를 볼 때 울기를 원한다. – voodoo417

관련 문제