2009-04-09 3 views
0

웹 서비스에서 gzip을 가져 오는 중 클라이언트와 협력하고 있습니다. 나는 그런 'test.gzip'로, 그 파일을 작성하려고 할 때 나는 때문에 가장 가능성이 ... 나중에 그것을 열 수 없습니다 오전, 지금SOAP에서 파일을 어떻게 구할 수 있습니까?

$response = $client->call('branchzipdata', $param); 
$filename = "test.gzip"; 
if (!$handle = fopen($filename, 'a')) { 
    echo "Cannot open file ($filename)"; 
    exit; 
} 

if (fwrite($handle, $response) === FALSE) { 
    echo "Cannot write to file ($filename)"; 
    exit; 
} 

: 내 다음 호출에 응답을 얻을 수 있어요 나는 끔찍한 잘못을 저지르고있다. 모든 통찰력은 인정 될 것이다.

편집 : 나는 대신에 '에 .gz'의 '.GZIP'로 파일을 저장 한 몇 가지 이유를 들어

... 그래서 지금 일을해야하기 위해이 있습니다

$response = $client->call('call', $param); 
$content = base64_decode($response); 
$filename = "output_zip.gz"; 
if (!$handle = fopen($filename, 'w')) { 
    echo "Cannot open file ($filename)"; 
    exit; 
} 

if (fwrite($handle, $content) === FALSE) { 
    echo "Cannot write to file ($filename)"; 
    exit; 
} 
fclose($handle); 
echo system("gzip -d $filename"); 

답변

1

(주석에 따라 편집 됨)

반환 값이 base64 인코딩 된 경우 파일에 쓰기 전에 base64 디코딩해야합니다. 또는 파일을 열어보기 전에 다른 파일로 base64 디코딩 한 파일에 쓸 수는 있지만, 처음에는 그 파일을 디코딩하는 것보다 조금 비쌉니다.

+0

죄송합니다. 코드 조각을 포함하는 것을 잊어 버렸지 만 실제로 핸들을 닫습니다. 더 많이 읽을수록 나는 잘못된 방향으로 접근하고 있다고 생각합니다. 나는 아직 비누를 다루어야한다. – Thomas

+0

파일을 읽으려고하면 어떻게됩니까? 실제로 열 수 있습니까? gzip 파일이 아닙니다. 언제든지 base64로 인코딩 되었습니까? –

+0

나는 더 이상 일하지 않지만 예, base64로 인코딩되었습니다. 나를 혼란스럽게 만든 부분은 내용을 test.gzip에 쓰거나 나중에 내용을 디코딩하기 전에 디코딩해야합니까? 비누 요청에서 얻은 응답을 처리 할 때 나는 혼란스러워합니다. 당신의 도움을 주셔서 감사합니다! – Thomas