私はオンライン請求書システムを使用しており、その API を使用すると、base64 でエンコードされた圧縮された pdf である文字列の形式で PDF 請求書をダウンロードできます。この文字列を base64_decode() でデコードし、ファイルとして保存します。file_put_contents('temp/soubor.zip', $data);
このzipファイルをWindowsで開きたい場合は、問題ありません。しかし、私はphp経由でそれを抽出したいのですが、私が呼び出すと:
$zip = new ZipArchive;
if ($zip->open('temp/soubor.zip') === TRUE) {
print_r($zip->statIndex(0));
$zip->close();
}
私は得る
Array ( [name] => zipEntryName [index] => 0 [crc] => 1906707552 [size] => -1 [mtime] => 1358774308 [comp_size] => -1 [comp_method] => 8 )
-1 である size を除いてすべて問題ありません。何も抽出されないため、これは大きな問題です。
そして興味深いことに、zip ファイルを winRar で開き、修復アーカイブを選択し、スクリプトで修復された zip ファイルを開くと、正しいサイズが得られ、ファイルを正しく抽出できます。ところで、アーカイブされたファイルはわずか 260kB です。