来自SOAP的文件,如何保存?

时间:2009-04-09 21:30:13

标签: php soap wsdl nusoap

我正在与客户一起从他们的web服务获取gzip。我可以通过以下电话获得回复:

$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;
}

现在,当我尝试写一个文件,例如'test.gzip'时,我无法打开它...很可能是因为我做了一些可怕的错误。任何见解都将不胜感激。

编辑:

出于某种原因,我将文件保存为'.gzip'而不是'.gz'...所以为了让它工作我现在有:

$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 个答案:

答案 0 :(得分:1)

(根据评论编辑)

如果返回值是base64编码的,则需要在将其写入文件之前对其进行base64解码。或者,您可以将其写入一个文件,然后在尝试打开它之前将其解码为另一个文件,但与刚刚获得它时解码它相比,这似乎有点无意义。