我正在与客户一起从他们的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");
答案 0 :(得分:1)
(根据评论编辑)
如果返回值是base64编码的,则需要在将其写入文件之前对其进行base64解码。或者,您可以将其写入一个文件,然后在尝试打开它之前将其解码为另一个文件,但与刚刚获得它时解码它相比,这似乎有点无意义。