0

クライアントと協力して、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」などのファイルを書き込もうとすると、後で開くことができません...おそらく、何か恐ろしい間違いをしているからです。任意の洞察をいただければ幸いです。

編集:

何らかの理由で、ファイルを「.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");
4

1 に答える 1

1

(コメントに基づいて編集)

戻り値が base64 でエンコードされている場合は、ファイルに書き込む前に base64 でデコードする必要があります。または、それを開こうとする前に別のファイルにbase64 デコードするファイルに書き出すこともできますが、最初に取得したときにデコードするだけと比べると、少し無意味に思えます。

于 2009-04-09T21:32:05.340 に答える