0

我在提取从base64数据创建的 zip 文件时遇到问题这是我的脚本

<?

$basedata =  base64_decode($data['data']);
$f = fopen ("c:/xampp/htdocs/sms/basedata/data.zip","x+");
fwrite($f, $basedata);
fclose($f);

$zip = new ZipArchive();

$res = $zip->open('c:/xampp/htdocs/sms/basedata/data.zip');
if ($res === TRUE) {
  // extract it to the path we determined above
  $zip->extractTo("c:/xampp/htdocs/sms/basedata/extracted");
  $zip->close();
  echo "Success!";
} else {
  echo "Failed!";
}


}

?>

首先,我zipfopenandfwrite命令创建文件,然后创建 Zip 文件

并且该 zip 文件的内容是名为 data 的文件,该文件实际上是xml文件
xml数据来自解码的 base64 数据,然后编码为 zip

当我想用命令提取 zip 文件时$res = $zip->open('c:/xampp/htdocs/sms/basedata/data.zip');,它无法运行,因为 zip 文件实际上不是 zip 存档

我认为 PHP 只能读取 zip 存档,而不是编码为 zip 的文件

任何人都可以帮助我吗?

4

1 回答 1

0

使用函数addFromString

$basedata =  base64_decode($data['data']);

$zip = new ZipArchive;
$res = $zip->open('c:/xampp/htdocs/sms/basedata/data.zip', ZipArchive::CREATE);
if ($res === TRUE) {
    $zip->addFromString('basedata.txt', $basedata);
    $zip->extractTo("c:/xampp/htdocs/sms/basedata/extracted");
    $zip->close();
    echo 'ok';
} else {
    echo 'failed';
}
于 2013-06-18T15:35:16.100 回答