提取编码为Zip PHP的Base64

提取编码为Zip PHP的Base64,php,zip,base64,decode,encode,Php,Zip,Base64,Decode,Encode,我无法提取从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/basedat

我无法提取从
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!";
}


}

?>

首先,我通过
fopen
fwrite
命令创建
zip
文件 然后创建Zip文件

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

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

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

有人能帮我吗?

使用功能

$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';
}
ZipArchive
,您可以使用它来压缩;并且不要自动压缩文件,因此您创建的文件不是有效的压缩文件。