我正在使用在线发票系统,他们的 API 允许我以字符串形式下载 PDF 发票,该字符串是用 base64 编码的压缩 pdf。我使用 base64_decode() 解码此字符串,然后将其保存为文件:file_put_contents('temp/soubor.zip', $data);
现在,如果我想在 Windows 中打开这个 zip 文件就可以了。但我想通过 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,这是一个大问题,因为它不会提取任何东西。
现在有趣的事情是:如果我在 winRar 中打开 zip 文件,选择修复存档,然后在我的脚本中打开修复后的 zip 文件,我会得到正确的大小并且可以正确提取文件。顺便说一句,存档文件只有 260kB。