解压缩编码为Zip PHP的Base64

时间:2013-06-18 03:32:51

标签: 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/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!";
}


}

?>

首先,我从zipfopen命令创建fwrite文件 然后创建Zip文件

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

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

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

任何人都可以帮助我?

1 个答案:

答案 0 :(得分: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';
}